2012-11-07 8 views
5

使用するGSON出力されたjson文字列にmy Listのクラス名を追加するにはどうすればよいですか?私はapiを見てきましたが、これを行うための参照がありませんでした。私は実際のコードでGsonBuilderを使用していますが、どちらのオプションも表示されません。gson - シリアル化するときのクラス名を含むjava pojo - > json

public class Person { 
    String name; 

    public Person(String name){ 
    this.name = name; 
    } 

    public static void main(String [] args){ 
    Person one = new Person("Alice"); 
    Person two = new Person("Bob"); 

    List<Person> people = new ArrayList<Person>(); 
    people.add(one); 
    people.add(two); 

    String json = new Gson(people); 
    } 
} 

これは以下の出力を与える:

JSON = [{ "名前": "アリス"}、{ "名前": "ボブ"}]

方法次の出力を達成できますか?またはそれに類するもの。

JSON = { "人":[{ "名前": "アリス"}、{ "名前": "ボブ"}]}

又は

JSON =

私はちょうど逃したことを望みます。前もって感謝します。

+1

最も簡単な解決策は、いくつかの変数(またはリストが含まれていると思われる、いくつかの他のクラスを作成することができタイプpersonの) "person"という名前である。 – Serhiy

+0

この質問はかなり同じ問題を解決します:http://stackoverflow.com/questions/4623329/gson-serialize-pojo-with-root-value-included そして受け入れられた答えもかなり同じです。 – user905686

答えて

5

答えはまだあなた面白いですかどうかは知らないが、何を行うことができますことは、次のとおりです。

public static void main(String [] args){ 
    Person one = new Person("Alice"); 
    Person two = new Person("Bob"); 

    List<Person> people = new ArrayList<Person>(); 
    people.add(one); 
    people.add(two); 

    Gson gson = new Gson(); 
    JsonElement je = gson.toJsonTree(people); 
    JsonObject jo = new JsonObject(); 
    jo.add("person", je); 
    System.out.println(jo.toString()); //prints {"person":[{"name": "Alice"},{"name": "Bob"}]} 
} 
+0

これはまさに私が感謝のために探していたものです。 – feargal

関連する問題