在对杰克逊的工作方式进行繁琐的研究之后,我决定以JSON格式序列化/反序列化我的POJO对象。但是我在Jackson库的范围内找不到的是如何在序列化对象上执行CRUD操作,或者即使可能的话。
即我有一些对象列表,我将其序列化为JsonArray,并且我想对该列表中的对象执行CRUD操作之一。我的问题是如何在不反序列化整个对象列表并再次使用新值序列化或不实现某种自定义解析器的情况下完成它?
答案 0 :(得分:0)
如果您希望在完成反序列化之前能够对序列化的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)
上的注释一起使用。