sql >> データベース >  >> NoSQL >> MongoDB

Jacksonを使用して1つのクラスを2つの異なる方法でシリアル化します

    オプションを見ると、特定のViewの場合にのみ表示されるようにプロパティに注釈を付けることができるようです。 ObjectMapperに渡されます シリアル化に使用されます。したがって、クラスを編集できます:

    public static class FooReference {
        public DBRef<Foo> foo;
    
        @JsonView(Views.WebView.class)
        public Foo getFoo() {
            return foo.fetch();
        }
    }
    

    提供するもの:

    class Views {
        static class WebView { }
    }
    

    正しいビューで構成を作成した後、シリアル化します。

    SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
    objectMapper.setSerializationConfig(conf);
    

    次に、それをシリアル化します。 MongoDBラッパーでシリアル化するときにビューを指定しないと、メソッドが無視されることを意味します。 JsonViewアノテーションのないプロパティはデフォルトでシリアル化されます。動作は、次のように指定することで変更できます。

    objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
    

    詳細については、JacksonWikiを参照してください。

    他にも選択肢があります。クラス自体を変更せずにクラスの一部の(逆)シリアル化動作をオーバーライドできるJackson MixInがあり、Jackson 2.0(ごく最近のリリース)ではフィルターがあります。 、も。



    1. redis cluster reshard [ERR] MIGRATEの呼び出し:ERR構文エラー

    2. Mongodbの辞書を更新しています

    3. AWSLambdaでMongoDB接続プールを使用する方法

    4. MongoDBのパフォーマンス:MongoDBMapの実行-セカンダリでの操作の削減