2012-11-07 25 views
5

GSON का उपयोग करके मैं अपनी आउटपुट जेसन स्ट्रिंग में अपनी सूची का वर्ग नाम कैसे जोड़ूं? मैंने api को देखा है और ऐसा करने के लिए किसी भी संदर्भ को याद किया है। मैं अपने वास्तविक कोड में GsonBuilder का उपयोग कर रहा हूं लेकिन इसके लिए कोई भी विकल्प नहीं देख रहा हूं।जीसन - जावा पोजो को क्रमबद्ध करते समय कक्षा का नाम शामिल करें -> जेसन

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

सरल समाधान के कुछ अन्य वर्ग के निर्माण है, जो कुछ चर होते हैं (या सूची हो सकता है व्यक्ति के प्रकार के साथ) "व्यक्ति" नाम के साथ। – Serhiy

+0

यह प्रश्न बहुत ही समस्या को संबोधित करता है जैसे http://stackoverflow.com/questions/4623329/gson-serialize-pojo-with-root-value- शामिल और स्वीकृत उत्तर भी वही है। – 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