11

Jackson を使用して、Tomcat/jersey で Java オブジェクトを JSON オブジェクトに変換しようとしています。また、特定のプロパティのシリアル化 (書き込み) を動的に抑制したい。

JsonIgnore を使用できますが、実行時に無視の決定を下したいと考えています。何か案は??

以下の例のように、User オブジェクトを JSON にシリアル化するときに「id」フィールドを抑制したいと考えています。

new ObjectMapper.writeValueAsString(user);


class User {

private String id = null;
private String firstName = null;
private String lastName = null;

//getters
//setters

}//end class
4

4 に答える 4

4

はい、JSONビューが最適です。

たとえば、マーシャリングするフィールドをクライアントに決定させる必要がある場合は、次の例が役立つ可能性があります:http ://svn.codehaus.org/jackson/tags/1.6/1.6.3/src/sample/CustomSerializationView.java

于 2010-12-12T14:09:39.077 に答える
2

小切手

ObjectMapper.configure(SerialiationJson.Feature f, boolean value)

org.codehaus.jackson.annotate.JsonIgnore 

注釈

これは、特定のタイプのすべてのインスタンスがシリアライゼーションで id を無視するようにしたい場合にのみ機能します。本当に動的 (別名、インスタンスごとのカスタマイズ) が必要な場合は、おそらく自分で jackson ライブラリをハックする必要があります。

于 2010-06-05T18:14:10.110 に答える
0

JSON ビューを使用してみましたか? ビューを使用すると、さまざまなプロファイルを定義するための注釈ベースのメカニズムが可能になるため、ユーザーごとにわずかに異なるビューが必要な場合は、これでうまくいく可能性があります。

于 2010-06-14T22:26:01.013 に答える
0

私はそれを行う方法がわかりません。どのプロパティを整列化するかを動的に決定する必要がある場合は、オブジェクトを直接渡すのではなく、Mapオブジェクトの値へのキーを手動で作成し、それを Jackson に渡すことをお勧めします。MapUser

于 2010-06-05T17:52:16.597 に答える