2017-06-02 8 views
0

ジャクソンの仕組みを勉強した後、POJOオブジェクトをJSON形式でシリアライズ/デシリアライズしました。しかし、私がJacksonのライブラリの範囲で見つけることができないことは、直列化されたオブジェクト上でCRUD操作を実行する方法、または可能であってもそれを実行する方法です。JSON形式のファイルに対するCRUD操作

つまり、私はJsonArrayとしてシリアル化するオブジェクトのリストを持っており、そのリスト内のオブジェクトに対してCRUD操作の1つを実行したいと考えています。私の質問は、オブジェクトのリスト全体を逆シリアル化せずに新しい値でシリアル化するか、何らかのカスタムパーサーを実装しないで、どのようにして行うことができるかです。

+0

必要に応じて、フィルタロジックを定義できるカスタムシリアライザ/デシリアライザを使用できます。 – eg04lt3r

+0

@ eg04lt3r答えに感謝します。フィルターに関する記事はありますか? – user2035457

+0

この簡単な記事はhttps://spin.atomicobject.com/2016/07/01/custom-serializer-jackson/で確認できます。デシリアライズにも同様のことがありますが、カスタムクラスはJsonDeserializerを拡張する必要があります。 – eg04lt3r

答えて

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)の注釈とともに使用することもできます。

+0

はい私はそれを使用しました。しかし、アレイ全体を再度読み取ることなく、どのように配列のオブジェクトの変化を検出することができますか? – user2035457

+0

これはどのような目的のために必要ですか? – eg04lt3r

+0

フォーラムデータモデルとシリアライゼーションを作成する必要がありますが、リレーショナルデータベースは必要ありません。 – user2035457

関連する問題