2016-11-26 2 views
1

Ich bin stecken in die Daten aus der JSON-Datei mit mehreren Datensätzen zu bekommen.So greifen Sie mit mehreren Array-Objekten auf JSON-Daten zu: Android

{"status":"ok","count":3,"count_total":661,"pages":133,"posts": 
[{"id":20038,"type":"post","slug":"xperia-launcher-download","url":"http:\/\/missingtricks.net\/xperia-launcher-download\/","status":"publish","title":"Download Xperia Launcher app for Android (Latest Version)", 
{"id":94,"type":"post","slug":"top-free-calling-apps-of-2014-year","url":"http:\/\/missingtricks.net\/top-free-calling-apps-of-2014-year\/","status":"publish","title":"Best Free Calling Apps for Android November 2014", 
{"id":98,"type":"post","slug":"top-free-calling-apps-of-2016-year" "url":"http:\/\/missingtricks.net\/top-free-calling-apps-of-2016-year\/","status":"publish","title":"Best Free Calling Apps for Android December 2016"}]} 

Ich muss auf den Titel, die URL und den Status von der oben genannten JSON-Datei zugreifen.

@Override 
    protected void onPostExecute(String result) { 
     //this method will be running on UI thread 

     pdLoading.dismiss(); 
     List<DataFish> data = new ArrayList<>(); 
     pdLoading.dismiss(); 
     try { 
      JSONArray jArray = new JSONArray(result); 
      // Extract data from json and store into ArrayList as class objects 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject json_data = jArray.getJSONObject(i); 
       DataFish fishData = new DataFish(); 
       fishData.status = json_data.getString("status");     
       fishData.title = json_data.getString("url");     
       fishData.sizeName = json_data.getString("title"); 
       data.add(fishData); 
      } 
     } catch (JSONException e) { 
      Toast.makeText(JSonActivity.this, e.toString(), Toast.LENGTH_LONG).show(); 
      Log.d("Json","Exception = "+e.toString()); 
     } 
    } 

Ich bin ein JSONException mit dem obigen Code zu bekommen.

Was soll ich tun, um auf den Titel, den Status und die URL aus der JSON-Datei zuzugreifen?

+1

Die Antwort ist nicht das richtige Format json – Nithinlal

+0

@Nithinlal i den gleichen –

Antwort

2

Sie müssen Ihre JSONArray holen, die in einem JSONObject ist, so ein JSONObject erstellen und Array holen mit dem Index "Beiträge"

1.) result ist ein JSONObject so erstellen JSONObject

2. Fetch Jetzt einfach Traverse Array-Objekte Ihre JSONArray mit Indexwert als "Beiträge"

3.)), indem es durch Index

holen

Hinweis: ich weiß nicht, Wetter es sich um eine Beispielantwort mit kürzeren Version obwohl Ihr json Objekt sollte endet mit } nicht mit ,.

[{ "id": 20038, "type": "post", "Schnecke": "xperia-Launcher-Download", "url": "http://missingtricks.net/xperia-launcher -Download/" "Status": "veröffentlichen", "title": " Xperia Launcher-App für Android (neueste Version) Download",

// ^^^ there should be a } not a , to end json 
// so make sure to do the correction so it will look like => ...st Version)"}, 

{ "id": 94" type ":" post "," slug ":" top-freiberuflicher-apps-of-2014-year "," url ":" http://missingtricks.net/top-free-calling-apps-of- 2014-Jahr/"," status ":" veröffentlichen "," titel ":" Beste Free Calling Apps für Android November 2014 ",]

Verbesserungen:

Sie optString verwenden können null oder Nicht-String-Wert zu vermeiden, wenn es keine Zuordnung ist der Schlüssel

Dies hat zwei Varianten

eine optionale Zeichenfolge Get mit einem Schlüssel verknüpft. Es gibt defaultValue zurück, wenn es keinen solchen Schlüssel gibt.

public String optString(String key, String defaultValue) { 
fishData.status = json_data.optString("status","N/A"); 
// will return "N/A" if no key found 

oder leere Zeichenkette erhalten, wenn nicht einfach gefunden Schlüssel dann

fishData.status = json_data.optString("status"); 
// will return "" if no key found where "" is an empty string 
+1

Gebrauch Punkt war etwa statt getString optstring seinen Nullpunkt Ausnahme vermeiden – Nithinlal

+0

@Nithinlal ja es ist der Rat, den ich jedem geben, bin ich einfach nur für einen alten Beitrag, um dies zu zeigen :) danke –

+1

Das funktioniert! –

1

Sie Ihre here JSON validieren können verwendet werden.

Wenn die gesamte JSON getJsonObject() nicht funktioniert, dann sollten Sie JSON-Objekte & Array in mehreren Arrays analysieren und dann verwenden.

Verwandte Themen