2012-10-23 5 views
25

Gsonのシリアル化中にカスタムフィールドを追加する簡単な方法が見つからず、他の人が手助けできることを期待していました。ここでGsonはシリアル化中にフィールドを追加します

は私の問題を表示するサンプルクラスです:

public class A { 
    String id; 
    String name; 
    ... 
} 

私はクラスAIのようなものを返したいシリアライズする場合:

url_to_userはクラスの私のインスタンスに格納されていない
{ "id":"123", "name":"John Doe", "url_to_user":"http://www.example.com/123" } 

Aクラスのインスタンス内のデータで生成することができます。

これを行う簡単な方法はありますか?私は1つのフィールドを追加するだけで、シリアライザ全体を書くのを避ける方がよいでしょう。

答えて

44

Gson.toJsonTreeを使用してJsonElementを取得すると、動的に対話できます。

A a = getYourAInstanceHere(); 
Gson gson = new Gson(); 
JsonElement jsonElement = gson.toJsonTree(a); 
jsonElement.getAsJsonObject().addProperty("url_to_user", url); 
return gson.toJson(jsonElement); 
+0

ありがとうございました。十分に簡単で、私がやっていることのために働く。 – joncalhoun

+0

シンプルな...簡単な方法があることを望みます。オブジェクトのメソッド... – Armand

関連する問題