在關於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