2016-07-20 7 views
0

はしかし、私の結果は、フィールドidnameの両方が含まれています。しかし、私はidを表示したくありません。PlayのtoJsonを作成するには、外部ライブラリを使用せずにモデルのいくつかのフィールドをスキップしますか?私は<strong>toJson(人)</strong>を行うときに、私はこの</p> <pre><code>@Entity public class Person extends Model { @Id public int id; public String name; } </code></pre> <p>のようなエンティティを作成しようとしています

最終JSON出力はidフィールドが含まれないようにtoJsonは、いくつかのフィールドにをスキップ行います(gsonのは、例えば、を公開など)の任意の注釈か何かがあるの?

[短い答え] - 利用@JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore)

+0

これは、http://stackoverflow.com/questions/30440902/java-object-to-json-with-only-selected-fieldsの複製としてマークされる可能性があります。 –

答えて

0

あなたは2つのオプションがあります。

まず、あなたが外部のライブラリを使用せずに、いくつかのフィールドをスキップする必要がある場合には : あなたがで元の質問と回答を見ることができます:

Java object to JSON with only selected fields

をそのフィールドのgetterメソッドでJacksonの@JsonIgnoreアノテーションを使用すると、結果のJSONにそのようなキーと値のペアがないことがわかります。あなたは 「一過性」を使用する必要があり、一般的にシリアル化する必要はありません

どれフィールド:あなたはGsonライブラリを使用している場合

@JsonIgnore 
public String name; 

第二は、他の方法が@ChrisSelineからすぐですこれはJSONシリアライザ にも当てはまります(少なくともGonを含む私が使用したことはいくつかあります)。

シリアライズされたJSONに名前を表示したくない場合は、 という一時的なキーワードを付けます。gsonで、

private transient String name;

Details Here

+0

yeah gsonは一時的に使用します。私は遊びの 'toJson'メソッドについて質問していました。 'id'フィールドへの一時的な追加は役に立ちませんでした。 IDは値として「0」で私のjsonにまだ現れます。 –

+0

だから、あなたはこの質問を読むべきです:http://stackoverflow.com/questions/30440902/java-object-to-json-with-only-selected-fields これはあなたの質問を解決します。 – vanloc

+0

あなたの以前のコメントは正しい答えですが、あなたの投稿はありません。あなたは上記のあなたのコメントを精緻化して、それを投稿して正しい印を付けることができますか? –

0

私の知る限りプレイ!トランジエントフィールドをシリアル化しないGsonを使用します。

は、だから私はこのようtransient修飾子を追加すると思う:

@Id 
public transient int id; 

はそれを行う必要があります。

+0

「toJson 'gsonを使わないで遊ぶ方法? –

0

、最も簡単な方法は、

public transient int id; 

として過渡追加されるか、注釈@Exposeと

new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); 

を追加することができますそれを実現する

+0

gsonを使用せずに、演奏中にtoJsonメソッドを使用する方法。 –

関連する問題

 関連する問題