2013-08-24 11 views
85

मैं इस तरह एक JSON फ़ाइल पार्स करने के लिए GSON का उपयोग करना:एक JSON सारणी

[ 
    { 
     "number": "3", 
     "title": "hello_world", 
    }, { 
     "number": "2", 
     "title": "hello_world", 
    } 
] 

जब फ़ाइलें एक मूल तत्व था इससे पहले कि मैं का प्रयोग करेंगे:

Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class); 

कोड लेकिन मुझे नहीं लगता कर सकते हैं रूट तत्व के रूप में Wrapper वर्ग को कोड कैसे करें।

मैं का उपयोग कर की कोशिश की है:

Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class); 

साथ:

लेकिन किसी भी भाग्य नहीं किया है। इस विधि का उपयोग करके मैं इसे और कैसे पढ़ सकता हूं?

पी.एस मैं इस का उपयोग कर काम करने के लिए मिल गया है:

JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine); 
String title = ((JsonObject)entries.get(0)).get("title"); 

लेकिन मुझे पता है कि यह कैसे करना है (यदि संभव हो) दोनों तरीकों के साथ पसंद करेंगे।

+2

तुम वहाँ वाकई शीर्षक तत्वों के बाद अल्पविराम है? यदि आप उन्हें 'रैपर [] डेटा = gson.fromJson (जेलेमेंट, रैपर [] कक्षा) हटाते हैं,' मेरे लिए ठीक काम करता है। – Pshemo

+0

यह समस्या होगी .. इतनी सरल गलती! – Edd

उत्तर

88

समस्या आपके सरणी के अंतिम तत्व (प्रत्येक title के बाद) के बाद अल्पविराम के कारण होती है। आप इसे हटा और के लिए अपने डेटा को बदलते हैं

[ 
    { 
     "number": "3", 
     "title": "hello_world" 
    }, { 
     "number": "2", 
     "title": "hello_world" 
    } 
] 

Wrapper[] data = gson.fromJson(jElement, Wrapper[].class); ठीक काम करेंगे।

33
Gson gson = new Gson(); 
Wrapper[] arr = gson.fromJson(str, Wrapper[].class); 

class Wrapper{ 
    int number; 
    String title;  
} 

ठीक काम करने लगता है। लेकिन आपकी स्ट्रिंग में अतिरिक्त , कॉमा है।

[ 
    { 
     "number" : "3", 
     "title" : "hello_world" 
    }, 
    { 
     "number" : "2", 
     "title" : "hello_world" 
    } 
] 
9
public static <T> List<T> toList(String json, Class<T> clazz) { 
    if (null == json) { 
     return null; 
    } 
    Gson gson = new Gson(); 
    return gson.fromJson(json, new TypeToken<T>(){}.getType()); 
} 

नमूना कॉल:

List<Specifications> objects = GsonUtils.toList(products, Specifications.class); 
+2

मेरे लिए, यह मेरी ऑब्जेक्ट्स को विशिष्टता ऑब्जेक्ट्स (उदाहरण के लिए) की बजाय LinkedTreeMap की सूची में बदल रहा है। –

+0

आपको GsonUtils कक्षा कहां मिली? –

+0

'जीसनउटिल्स 'वह वर्ग है जहां उसने अपनी खुद की'' सूची() 'विधि को रखा है। – user1438038

संबंधित मुद्दे