Java JSON格式文件上的CRUD操作

Java JSON格式文件上的CRUD操作,java,json,jakarta-ee,jackson,Java,Json,Jakarta Ee,Jackson,在对Jackson的工作方式进行了乏味的研究之后,我设法以JSON格式序列化/反序列化我的POJO对象。但我在Jackson库的范围内找不到的东西是如何在序列化对象上执行CRUD操作,甚至是在可能的情况下 也就是说,我有一个对象列表,我将其序列化为JsonArray,我想对该列表中的对象执行一个CRUD操作。我的问题是,如果不将整个对象列表反序列化并再次使用新值对其进行序列化,或者不实现某种自定义解析器,如何实现此功能?如果您想在完成反序列化之前对序列化的Json对象进行修改,可以定义自定义反序

在对Jackson的工作方式进行了乏味的研究之后,我设法以JSON格式序列化/反序列化我的POJO对象。但我在Jackson库的范围内找不到的东西是如何在序列化对象上执行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)
上的注释一起使用

根据您的需要,您可以使用自定义序列化器/反序列化器,您可以在其中定义筛选器逻辑。@eg04lt3r谢谢您的回答。有关于过滤器的好文章吗?你可以查看这篇简单的文章。反序列化也是类似的,您的自定义类应该扩展JsonDeserializer。@eg04lt3r我已经阅读了这篇文章。甚至在我问这个问题之前,我已经进行了自定义序列化/反序列化,但我真的不知道如何使用自定义序列化/反序列化来更新json数组中的对象属性。有什么想法吗?是的,我用过。但是我怎样才能在不再次读取整个数组的情况下检测数组对象的变化呢?您需要它的目的是什么?我需要创建一个论坛数据模型和序列化,但不需要关系数据库。即使您不需要rdbms,您仍然需要更新数据。对于每个客户端,您应该再次序列化数据,或者使用缓存并检查数据更改。无论如何,这不是序列化程序/反序列化程序的责任。您应该以更方便的方式思考如何构建您的体系结构解决方案。看来你走错了路。这是每次从序列化数据(如数组)读取数据时的正常行为。因为此功能仅用于数据转换。