2013-05-25 7 views
5

के साथ जीसन मैं जावा/एंड्रॉइड में एक नौसिखिया हूं और मैं जेसन के साथ जेसन को पार्स करने का प्रयास करता हूं।गतिशील नाम (एंड्रॉइड)

मुझे फ़ाइलों के हिस्से में कुछ कठिनाई हो रही है। से मैं क्या पढ़ा है मैं MapHash का उपयोग करना चाहिए, लेकिन मैं कैसे इस कोड

यहाँ मेरी मुख्य वर्ग में इसका इस्तेमाल करने के यकीन नहीं है

InputStream source = retrieveStream(url); 
Gson gson = new Gson(); 
Reader reader = new InputStreamReader(source); 
SearchResponse response = gson.fromJson(reader, SearchResponse.class); 

वर्ग कि पार्स कर

public class SearchResponse { 

    public List<Podcast> podcasts; 

    class Podcast { 

     @SerializedName("files") 
     private List<File> files; 

     @SerializedName("format") 
     private String format; 

     @SerializedName("title") 
     private String title; 

    class File { 
     private String ValueX; 
     private String URLX; 
     } 
    } 
} 

json संरचना

{ 
"podcasts": [ 
    { 
    "files": [ 
     {"NameA": "ValueA"}, 
     {"NameB": "ValueB"}, 
     {"...": "..."} 
    ], 
    "format": "STRING", 
    "title": "STRING" 
    } 
    ] 
} 

आपकी मदद के लिए धन्यवाद

यहाँ JSON की संरचना का एक संपादित फ़ाइल मैं http://jsontest.web44.net/noauth.json

+0

तुम भी Gson का उपयोग किए बिना एक JSON पार्स कर सकते हैं। आप JSONObject से क्या प्राप्त करना चाहते हैं? –

+0

मैं दोनों नाम और मूल्य प्राप्त करना चाहता हूं। – Keven

+0

आपके पास आपके साथ JSON ऑब्जेक्ट है, जो कहीं से प्रतिक्रिया हो सकती है? –

उत्तर

5

पार्स करने के लिए अपने File कक्षा में कोशिश है आप 2 गुण: ValueX और URLX। लेकिन अपने JSON में आप 2 क्षेत्रों NameA और NameB ...

JSON उत्तर में

नाम और अपने वर्ग से मेल खाना चाहिए है, अन्यथा आप किसी भी मूल्य नहीं मिलेगा ...

कि से

अलावा, अपने वर्ग संरचना अच्छा लग रहा है, और deseralizing के लिए अपने कोड के रूप में अच्छी तरह से अच्छा लग रहा है ... मुझे नहीं लगता कि आप किसी भी HashMap जरूरत है ...


संपादित करें: खाते में अपनी टिप्पणी ले रहा है, तो आप एक HashMap इस्तेमाल कर सकते हैं। आप अपने Podcast वर्ग का उपयोग कर बदल सकता है:

@SerializedName("files") 
private List<Map<String,String>> files; 

और आप इसे ठीक प्रकार से पार्स मिलना चाहिए।

आप क्योंकि आप एक JSON सारणी ([ ] से घिरा हुआ) एक List उपयोग करने के लिए, और फिर आप Map उपयोग कर सकते हैं अलग फ़ील्ड नाम अनुमति देने के लिए।

नोट आप अपने File वर्ग को हटाना होगा कि ...

+0

लेकिन नाम और मान यादृच्छिक हैं। मैंने इसे प्रतिबिंबित करने के लिए अपनी पोस्ट संपादित की है। मैंने यह दिखाने के लिए एक फाइल डाली है कि जेसन कैसे संरचित है http://jsontest.web44.net/noauth.json – Keven

+0

@ केविन संपादित करें – MikO

+0

धन्यवाद मुझे http://stackoverflow.com/questions पर मेरा उत्तर भी मिला है/7651953/जीसन-पार्सिंग-गतिशील-जेसन-फील्ड मेरा छोड़कर जैसा कि आपने वास्तव में एक सूची कहा था – Keven

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