5

org.apache.commons.collections.list.LazyListJSON にシリアル化されたフィールドの 1 つにa を使用するオブジェクトがあります。JSON は次のようになります。

        "myObject": ["org.apache.commons.collections.list.LazyList", [
            {
                "attr1": "asdasd",
                "attr2": 1234
            }
        ]],

オブジェクト フィールドは次のようになります。

List<MyObject> myObject = ListUtils.lazyList(new ArrayList(), {new MyObject()} as Factory)

ただし、Jackson ObjectMapper を使用して上記の JSON を逆シリアル化しようとすると、LazyList のデフォルトのコンストラクターが見つからないため失敗します。これは理にかなっています。しかし、このフィールドを逆シリアル化する方法を指定するにはどうすればよいでしょうか?

エラーメッセージ:

[コレクション型; の既定のコンストラクターはありません。クラス org.apache.commons.collections.list.LazyList、[単純型、クラス foo.bar.MyObject]] を含む

報奨金の制約:

報奨金を集めるには、カスタムのジャクソン デシリアライザーを使用してこの質問に答える必要があります。カスタム デシリアライザーはフィールド固有のものであってはなりません。したがって、特定の型の LazyList のカスタム実装を使用するソリューションは、この質問に適切に答えることができません。

4

1 に答える 1

1

以下の解決策は、List コレクション オブジェクトと Map コレクション オブジェクトの両方で機能しましたが、あなたのコレクション オブジェクトでも機能する可能性があります。

@JsonDeserialize(contentAs=MyObject.class)
private List<MyObject> myObject = ListUtils.lazyList(new ArrayList(), {new MyObject()} as Factory);
于 2013-08-29T04:47:31.320 に答える