【发布时间】:2021-12-13 23:30:00
【问题描述】:
我正在尝试将我的对象转换为 json,但默认的序列化程序,杰克逊的反序列化程序不起作用。
我怎样才能做到这一点?我知道我可能需要编写一个自定义序列化程序、反序列化程序。我怎样才能做到这一点? 通过添加哪些代码可以工作,是否有一些注释?
这是对象:
@JsonDeserialize(keyUsing = mypairDeserializer.class)
@JsonSerialize(keyUsing = mypairSerializer.class)
HashMap<Set < Mypair > , List < Mypair > > obj;
public class ConditionSerializer extends JsonSerializer<Collection<mypair>> {
@Override
public void serialize(final Collection<mypair> conditionSet, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeStartObject();
jsonGenerator.writeFieldName("Pair");
jsonGenerator.writeStartArray();
for(final Condition condition: conditionSet) {
jsonGenerator.writeString(mypair.toString());
}
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
}
}
public class mypairDeserializer extends KeyDeserializer {
ObjectMapper mapper = new ObjectMapper();
@Override
public Collection<mypair> deserializeKey(final String key, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
// return new mypair(key);
return mapper.readValue(key, Collection.class);
}
}
【问题讨论】:
-
解释为什么它不起作用。有什么例外吗?
标签: java json serialization json-deserialization jackson-databind