2012-08-02 17 views
8

ich einen API-Output wie diese:JSONObject in JSONObject

{"user" : {"status" : {"stat1" : "54", "stats2" : "87"}}} 

ich einen einfachen JSONObject aus dieser API mit:

JSONObject json = getJSONfromURL(URL); 

Danach kann ich die Daten für Benutzer wie folgt lauten:

String user = json.getString("user"); 

Aber wie bekomme ich die Daten für stat1 und stat2?

Antwort

19

JSONObject bietet Accessoren für eine Anzahl von verschiedenen Datentypen, einschließlich verschachtelter JSONObjects und JSONArrays, unter Verwendung von JSONObject.getJSONObject(String), JSONObject.getJSONArray(String).

Ihre JSON gegeben, Sie so etwas wie dies zu tun bräuchten:

JSONObject json = getJSONfromURL(URL); 
JSONObject user = json.getJSONObject("user"); 
JSONObject status = user.getJSONObject("status"); 
int stat1 = status.getInt("stat1"); 

Hinweis der Mangel an Fehler hier Handhabung: Der Code zum Beispiel nimmt die Existenz der verschachtelten Mitglieder - Sie für null überprüfen sollten, - und es gibt keine Ausnahmebehandlung.

+0

Meinten Sie 'JSONObject user = json.getJSONObject (" Benutzer ")'? –

+0

@CheJami Ich habe, behoben. Vielen Dank – pb2q

1

Um die Eigenschaften in einem JSON-Zugriff Sie das Objekt analysieren kann JSON.parse und anschließend acceess die gewünschte Eigenschaft wie:

var star1 = user.stat1; 
2
JSONObject mJsonObject = new JSONObject(response); 
JSONObject userJObject = mJsonObject.getJSONObject("user"); 
JSONObject statusJObject = userJObject.getJSONObject("status"); 
String stat1 = statusJObject.getInt("stat1"); 
String stats2 = statusJObject.getInt("stats2"); 

aus Ihrer Antwort Benutzer und Status Objekt ist so für diese Verwendung getJSONObject und stat1 und stats2 ist Status Objektschlüssel so für diese Verwendung getInt() Methode zum Abrufen Ganzzahlwert und verwenden getString() Methode zum Abrufen von String-Wert.