2015-05-06 8 views
12

मुझे इस एपीआई से जेसनऑब्जेक्ट में परिणाम बदलने में बहुत परेशानी है।जेसनऑब्जेक्ट में इनपुटस्ट्रीम - जीएसओएन

"परिणाम" शून्य रहता है इससे कोई फर्क नहीं पड़ता कि मैं क्या करने की कोशिश करता हूं।

URL url = new URL(urlString); 
    InputStream input = url.openStream(); 
    Reader reader = new InputStreamReader(in, "UTF-8"); 
    JsonResult result = new Gson().fromJson(reader, JsonResult.class); 

JsonResult वर्ग

public class JsonResult { 
    private String status; 
    private Meta meta; 
    private ArrayList<Player> players; 
} 

class Meta{ 
    private String count; 
} 

Json:

{"status":"ok","meta":{"count":12},"data":[{"nickname":"DataBase","account_id":500566109},{"nickname":"database007","account_id":514382449},{"nickname":"Database04","account_id":504367425},{"nickname":"database08","account_id":515081772},{"nickname":"database1","account_id":503282284},{"nickname":"database1221","account_id":506709044},{"nickname":"database123","account_id":508409172},{"nickname":"database1337","account_id":501661259},{"nickname":"database169","account_id":503884400},{"nickname":"database2","account_id":504337382},{"nickname":"database93","account_id":518691821},{"nickname":"databaseking66","account_id":505911069}]} 

नोट: यह एक स्कूल परियोजना के लिए है

नोट 2: मैं जाँच की थी और अन्य समाधान का एक बहुत का परीक्षण एसओ से लेकिन सही एक नहीं मिला या समझ में नहीं आया।

संपादित करें 1:

public class JsonResult { 
    @SerializedName("status") 
    public String status; 
    @SerializedName("meta") 
    public Meta meta; 
    @SerializedName("data") 
    public Player[] players; 
} 

class Meta{ 
    @SerializedName("count") 
    private String count; 
} 

प्लेयर वर्ग

public class Player { 

    private int account_id; 
    private String nickname; 

    public Player(int account_id, String nickname){ 
     this.account_id = account_id; 
     this.nickname = nickname; 
    } 


    //Generated 
    public void setAccount_id(int account_id) { 
     this.account_id = account_id; 
    } 

    //Generated 
    public void setNickname(String nickname) { 
     this.nickname = nickname; 
    } 

    public String toString() { 
     return this.account_id + this.nickname; 
    } 
} 
+2

आप कहते हैं कि आप "मुसीबत का एक बहुत" है - अच्छी तरह से क्या होता है? क्या वह कोड संकलित करता है? क्या कोई अपवाद है? जेएसओएन कैसा दिखता है? –

+2

@ जोकेम तीसरे पक्ष के लिंक उनके गतिशील प्रकृति के कारण फंस गए हैं (कोई भविष्य में लिंक पर क्लिक कर सकता है और कुछ भी उपयोगी नहीं मिलेगा)। आपकी पोस्ट को प्रासंगिक सब कुछ शामिल करने के लिए संपादित किया जाना चाहिए। _ हम में से कुछ कार्यस्थल फ़ायरवॉल के पीछे हैं;) _ – CubeJockey

+0

@ टोबबिन्स धन्यवाद, यह एक पल में होगा :)। मैंने प्रश्न – JochemQuery

उत्तर

4

अपने JsonResult वर्ग परिवर्तन में

public class JsonResult { 
    private String status; 
    private Meta meta; 
    @SerializedName("data") 
    private ArrayList<Player> players; 
} 
+6

यह वर्णन करना महत्वपूर्ण है _why_ यह समाधान है। कारण यह है कि जीसन उनके नाम से गुणों को मैप करने का प्रयास करता है, और जेएसओएन में खिलाड़ियों के ऐरे के लिए विशेषता नाम "डेटा" है, और जेसनआरसल्ट क्लास में "डेटा" के नाम से कोई विशेषता नहीं थी, इसलिए यह ' इसे रखने के लिए एक जगह नहीं मिलती है और इसे छोड़ देगा। यह एनोटेशन पार्सर को "डेटा" विशेषता को देखते समय 'खिलाड़ियों' फ़ील्ड का उपयोग करने के लिए कहता है। –

+0

स्पष्टीकरण @ डेवलॉग और उत्तर-विज्ञापन के लिए धन्यवाद। कुछ अभी भी मुझे एक शून्य त्रुटि दे रहा है। मैं अपना कोड दोबारा पढ़ रहा हूं और फिर कोशिश कर रहा हूं – JochemQuery

+0

क्या आप अपनी प्लेयर कक्षा पोस्ट कर सकते हैं? – Ads

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