2017-01-30 1 views
0

Ich habe versucht, zu den Vorhersagedaten zu erreichen, aber gescheitert, NullPointerException und manchmal Absturz. weil ich Daten von Artikel -> forecast -> {data} nicht erreichen oder abrufen kann.Wie kann ich Yahoo Weather API von JSON-Objekt-Kanal abrufen -> Artikel -> Prognose -> {Tag1} {Tag2} {Tag3} {Tag4} {Tag5}

Bei Item-Klasse:

condition = new Condition(); 
    condition.jsonPopulate("condition"); 

Bei Zustand Klasse:

void jsonPopulate(data){ 
     temp = data.optString("temp"); 
    } 

ich erfolgreich Daten in Zustandsklasse bekam,

Aber warum kann ich nicht die gleiche, da Prognose für Prognose tun und Bedingung sind Geschwister.

Da Prognose hat Array-Objekt, damit ich wie unten versucht, Daten abzurufen:

Context Item-Klasse Senden Objekt der Prognose Code of Item-Klasse wie unten.

forecast= new Condition(); 
    forecast.jsonPopulate("forecast"); 

Kontext Prognose Klasse, wenn retrive Daten von Prognose Objekt Code of Prognose Klasse wie unten.

private String day; 
    private String high; 
    private String low; 
    ArrayList<ForecastDetails>fdetails; 

    public void jsonPopulate(data){ 
    for(i=0; i<data.length(); i++){ 
      day = data.optString("day"); 
      high = data.optString("high"); 
      low = data.optString("low"); 

      fdetails.add(day); 
      fdetails.add(high); 
      fdetails.add(low); 
     } 

    } 

und versuchen, in einem ArrayList<ForecastDetails>; zu halten, aber scheiterte, jemand kann mir empfehlen, wie Prognosedaten von Item-Objekt von Yahoo Wetter abzurufen.

Antwort

0
JSONObject d = new JSONObject(data); 
    for(i=0; i<d.length(); i++) 
    { 
     day = d.getString("day"); 
      high = d.getString("high"); 
      low = d.getString("low"); 

      fdetails.add(day); 
      fdetails.add(high); 
      fdetails.add(low); 
    } 
+0

Sie meinen, ich sollte getString ("Tag") anstelle von optString ("Tag") verwenden; – shaheb

+1

können Sie optString auch kein Issue .. !!! Der Unterschied ist, dass optString die leere Zeichenfolge ("") zurückgibt, wenn der angegebene Schlüssel nicht existiert und getString dagegen eine JSONException auslöst, wenn der Schlüssel nicht in JSON vorhanden ist. – AnilCk

+0

Sie haben JSONObject d = new JSONObject (data) angegeben. ; Ich mochte das JSONObject Daten = neue JSONObject (s); JSONObject queryResult = data.optJSONObject ("query"); Abfrage-> Kanal-> Element-> Prognose -> {}, {}, {}, {}, {}; ich Zugang bis zur Vorhersage, aber nicht seine Daten innerhalb der lockigen Vorhersage Ich habe versucht, wie oben erwähnt, aber keine Daten erhalten. – shaheb

Verwandte Themen