2

たとえば、現在のSpringアプリケーションには20のエンティティクラスがあり、JSONオブジェクトにマップする必要があるのは1つだけなので、2つの質問があります:

  1. @JsonIgnoreProperties(ignoreUnknown=true)他のすべてのクラスに配置する必要がありますか?

  2. JSON ハンドラを選択org.codehaus.jacksonした場合、jackson がすべてのエンティティ クラスを調べてマッピングを試みる可能性はありますか? 私は

    org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError)
    

@JsonIgnore例外がスローされましたが、ログに記載されているコレクション オブジェクトは、クラス全体がとしてマークされていても、既に としてマークされてい@JsonIgnoreProperties(ignoreUnknown=true)ます。では、何が上記のようになるのでしょうか?

4

1 に答える 1

2

Jacksonを使用してクラスをJSONオブジェクトとしてマップしようとすると、すべてのプリミティブが正常になります。ただし、jacksonは、マッピングしているオブジェクトに含まれるすべてのオブジェクトをJSONオブジェクトにマッピングしようとします。したがって、JSONでマッピングするクラスのフィールドメンバーであるクラスは、JSON(およびそのオブジェクトフィールド)にマッピングできる必要があるか、元のクラスのオブジェクトフィールドを無視する必要があります。 。

また、無限ループを引き起こす可能性のある再帰的なマッピング(ユーザーにチームがあり、チームにユーザーのリストがあるなど)がある場合。ジャクソン2には、それを支援するための優れたソリューションがいくつかあります。

于 2013-03-14T17:31:32.660 に答える