在关于Jackson如何工作的繁琐研究之后,我试着将JSON格式的POJO对象序列化/反序列化。但是我在Jackson库的范围内找不到的东西是如何对序列化对象执行CRUD操作,或者即使可能。以JSON格式对文件进行CRUD操作
即我有序列化为JsonArray的对象列表,我想对该列表中的对象执行CRUD操作之一。我的问题是如何在不反序列化整个对象列表的情况下再次使用新值序列化或不实现某种自定义分析器?
在关于Jackson如何工作的繁琐研究之后,我试着将JSON格式的POJO对象序列化/反序列化。但是我在Jackson库的范围内找不到的东西是如何对序列化对象执行CRUD操作,或者即使可能。以JSON格式对文件进行CRUD操作
即我有序列化为JsonArray的对象列表,我想对该列表中的对象执行CRUD操作之一。我的问题是如何在不反序列化整个对象列表的情况下再次使用新值序列化或不实现某种自定义分析器?
如果您希望在完成反序列化之前可以对序列化的Json对象进行修改,则可以定义自定义的反序列化器。
例子:
public class CustomDeserializer extends JsonDeserializer {
@Override
public Value deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
// there you can apply your custom logic to the JsonNode
// and return value according to your business logic
return new Value(...);
}
}
您可以使用它的任何对象,如果寄存器ObjectMapper。或者,您可以在类@JsonDeserialize(using = CustomDeserializer.class)
上使用它进行注释。
是的,我用过。但是,如何在不读取整个数组的情况下检测数组对象中的更改? – user2035457
为了什么目的,你需要这个? – eg04lt3r
我需要创建论坛数据模型和序列化,但没有关系数据库。 – user2035457
为了您的需要,您可以使用自定义序列化器/解串器,您可以在其中定义过滤器逻辑。 – eg04lt3r
@ eg04lt3r谢谢你的回答。任何有关过滤器的好文章? – user2035457
你可以查看这篇简单的文章https://spin.atomicobject.com/2016/07/01/custom-serializer-jackson/。类似于反序列化的东西,你的自定义类应该扩展JsonDeserializer。 – eg04lt3r