2015-10-31 13 views
9

セイの別名は、私がオブジェクトを持っている:Javaのフィールド名

Object A 
    String field1 = "abc"; 
    String field2 = "xyz"; 

上記のためのJSONは次のとおりです。

{ 
    "ObjectA": { 
     "field1": "abc", 
     "field2": "xyz" 
    } 
} 

私が送信する前にフィールド名に対する新しいIDを作成しようとしていましたjson。例えば。 「field1」を「f1」、「field2」を「f2」と呼ぶ。だから、意図した出力JSONは以下の通りです:

{ 
    "ObjectA": { 
     "f1": "abc", 
     "f2": "xyz" 
    } 
} 

私はこれを行う方法を確認していません。上記はきれいに行えますか?あなたの助けと指針をありがとう。

私はgsonを使用しています。

+1

'@ SerializedName'でフィールドに注釈を付けたように見えますが、トリック([ドキュメントへのリンク](https://sites.google.com/site/gson/gson-user-guide#TOC-JSON-Field-ネーミングサポート))。 –

+1

ありがとう@Mick。私はその例を見て、それはうまくいくはずです。 – userDSSR

答えて

17

あなたのフィールドに注釈@SerializedName("name")を使用してください。このように:

Object A 
    @SerializedName("f1") 
    String field1 = "abc"; 
    @SerializedName("f2") 
    String field2 = "xyz"; 

https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.htmlを参照してください。

+0

ありがとう@ジェスパー、助けを求める。これは私にとってはうまくいくはずです。 – userDSSR

+0

上記の作品 - @ジェスパー。私は多くのクラスと多くのフィールドを持っています。 Ex。 "field1"は複数のクラスに現れます。上記の方法では、すべてのクラスに行き、 'String field1'に '@SerializedName( "f1")'を追加する必要があります。メンテナンス上の問題になる可能性があります。たとえばエイリアスを保持する方法はありますか?エイリアスクラスで "field1 = f1"を呼び出し、シリアル化中に呼び出す。ちょっとした考え。 – userDSSR

+0

この問題を解決したかっただけです。私が見つけた最良の方法は、定義を使って定数クラスを定義することでした。この定数は、アノテーションで使用できます。定数の定義が変更された場合、その定数を使用するすべての注釈に反映されます。 – userDSSR

関連する問題