我需要实现自定义反序列化程序来正确地将JSON解析为Java对象。根据文档中的规定,我需要用我的自定义程序替换默认的JSONReader:
JSON j = JSON.std.with(new MyJSONReader());
但是有两个问题:
JSONReader没有默认构造函数;
没有关于如何使用JSONReader的文档。
如何在Jackson jr中创建自定义反序列化程序?
我需要实现自定义反序列化程序来正确地将JSON解析为Java对象。根据文档中的规定,我需要用我的自定义程序替换默认的JSONReader:
JSON j = JSON.std.with(new MyJSONReader());
但是有两个问题:
JSONReader没有默认构造函数;
没有关于如何使用JSONReader的文档。
如何在Jackson jr中创建自定义反序列化程序?
//private Data data; - this is desired
private Map<String, Object> data;
public void setData(Object Data) {
if(data instanceof Map){
this.data = (Map<String, Object>) data;
} else {
this.data = null;
}
}
Jackson-jr 2.10增加了支持注册自定义读取器(ValueReader
)和写入器(ValueWriter
)的功能,如下所示:
https://medium.com/@cowtowncoder/jackson-2-10-jackson-jr-improvements-9eb5bb7b35f
我使用这个:
public class IntegerBooleanDeserializer extends JsonDeserializer<Boolean> {
@Override
public Boolean deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException
{
Integer data = Integer.parseInt(jsonParser.readValueAs(String.class));
return data == 1 ? true : false;
}
}
@JsonDeserialize(using = IntegerBooleanDeserializer.class)
boolean force;
对于布尔类型的自定义序列化器,您可以为每个对象使用此方法。