0

Ich weiß, das wurde oft gefragt, aber keine der angebotenen Lösungen funktioniert in meinem Fall.Wie erhält man einen String-Wert von JSON Array?

Hier ist meine JSON, die ich als eine Antwort von einem Webservice

{ 
"size": 1, 
"_links": { 
"context": "XXXX", 
"self": "XXXXXX", 
"base": "XXXXXX" 
}, 
"start": 0, 
"limit": 50, 
"results": [ 
{ 
    "container": { 
    "extensions": { 
     "position": "none" 
    }, 
    "_links": { 
     "webui": "XXXX", 
     "tinyui": "XXXX", 
     "self": "XXXXXX" 
    }, 
    "id": "XXXXX", 
    "type": "page", 
    "title": "XXXXX", 
    "_expandable": { 
     "container": "XXXXX", 
     "metadata": "", 
     "operations": "", 
     "children": "XXXX/child", 
     "history": "XXXX/history", 
     "ancestors": "", 
     "body": "", 
     "version": "", 
     "descendants": "XXXXX/descendant", 
     "space": "XXXXX" 
    }, 
    "status": "current" 
    }, 
    "metadata": { 
    "mediaType": "text/plain", 
    "comment": "" 
    }, 
    "extensions": { 
    "fileSize": 8, 
    "mediaType": "text/plain", 
    "comment": "" 
    }, 
    "_links": { 
    "download": "/download/attachments/XXXXX/MyData1.txt?version=1&modificationDate=1483652732000&api=v2", 
    "webui": "XXXXX", 
    "self": "XXXXX" 
    }, 
    "id": "attXXXXXX", 
    "type": "attachment", 
    "title": "MyData1.txt", 
    "_expandable": { 
    "operations": "", 
    "children": "XXXX", 
    "history": "XXXXX", 
    "ancestors": "", 
    "body": "", 
    "descendants": "XXXXX", 
    "space": "XXXXX" 
    }, 
    "version": { 
    "number": 1, 
    "minorEdit": false, 
    "by": { 
     "profilePicture": { 
     "path": "XXXXX", 
     "isDefault": true, 
     "width": 48, 
     "height": 48 
     }, 
     "displayName": "XXXXX", 
     "type": "known", 
     "userKey": "XXXXX", 
     "username": "XXXXX" 
    }, 
    "message": "", 
    "when": "2017-01-05T16:45:32.000-05:00" 
    }, 
    "status": "current" 
} 
] 
} 

ich den Wert der ID finden müssen immer bin, die attXXXXXX ist und hier ist mein Code.

JSONObject page = new JSONObject(pageObj); 
JSONArray jsonArray= page.getJSONArray("results"); 

for (int i = 0; i < jsonArray.length(); i++) { 
JSONObject explrObject = jsonArray.getJSONObject(i); 
} 

aber die obige Schleife läuft nur einmal als die Länge des jsonArray ist 1. die Lösung in anderen Stellen vorgesehen All sind die gleichen d.h. Iterieren über die json Array. Fehle ich etwas? Vorschlag?

+0

Es sieht aus wie Sie mit Java arbeiten, aber Sie haben nur Ihre Frage mit 'Json' markiert. Können Sie Tags für die Basistechnologie und die json-Bibliothek, die Sie verwenden, verwenden? –

+0

Bei Verwendung von PHP wird JSON decode es in ein normales PHP-Objekt verwandeln. Sie referenzieren es dann anhand seiner Werte an diesem Punkt. – DEVPROCB

+0

Weitere Tags hinzugefügt. – Naseem

Antwort

0

Ihre JSON-Zeichenfolge hat nur einen Wert in "Ergebnisse" Objekt. So kommt Ihre Array-Größe als 1 zurück. Das ist richtig.

Wenn Sie mehr als ein Array erwarten, überprüfen Sie den serverseitigen Code, in dem JSON erstellt wird.

Siehe Bild unten für mehr Verständnis.

enter image description here

ich es nicht getestet habe. Kannst du es versuchen? Wenn Sie die Lösung plz up-vote haben.

JSONObject page = new JSONObject(pageObj); 
JSONArray jsonArray= page.getJSONArray("results"); 

for (int i = 0; i < jsonArray.length(); i++) { 
    JSONObject explrObject = jsonArray.getJSONObject(i); 
    explrObject.getString("id") 
} 
+0

Danke, dass Sie es klarer machen. Haben Sie eine Lösung, um den ID-Wert zu erhalten? – Naseem

+0

Die Antwort wurde aktualisiert. Plz überprüfen. – GrabNewTech

+0

Nein ... Der ID-Wert wird beim ersten Mal nicht gefunden, beim zweiten Mal kommt er wegen der jsonArray-Größe nicht aus der Schleife heraus – Naseem

0

Ok, also konnte ich den Wert von der Antwort mit Rest Assured API erhalten. Es ist eine einfache API, um den Wert von JSON Array zu erhalten. Grundsätzlich muss ich den folgenden Befehl verwenden, um den Wert zu erhalten

Verwandte Themen