最终使用了此序列化器:
public class MapKeySerializer extends Serializerbase<Object> { private static final Serializerbase<Object> DEFAULT = new StdKeySerializer(); private static final ObjectMapper mapper = new ObjectMapper(); protected MapKeySerializer() { super(Object.class); } @Override public JsonNode getSchema(SerializerProvider provider, Type typeHint) throws JsonMappingException { return DEFAULT.getSchema(provider, typeHint); } @Override public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException { if (null == value) { throw new JsonGenerationException("Could not serialize object to json, input object to serialize is null"); } StringWriter writer = new StringWriter(); mapper.writevalue(writer, value); jgen.writeFieldName(writer.toString()); }}这个反序列化器:
public class MapKeyDeserializer extends KeyDeserializer { private static final ObjectMapper mapper = new ObjectMapper(); @Override public Object deserializeKey(String key, DeserializationContext ctxt) throws IOException, JsonProcessingException { return mapper.readValue(key, MyObject.class); }}注释了我的地图:
@JsonDeserialize(keyUsing = MapKeyDeserializer.class)@JsonSerialize(keyUsing = MapKeySerializer.class)private Map<KeyObject, OtherObject> map;
这是为我工作的解决方案,希望对您有所帮助。



