Ich kämpfe einige Werte aus einer JSON-Datei wie diese hier formatiert abzurufen:Abrufen von verschachtelten Arrays Werte mit JSON Java
{
"search": {
"entry": [
{
"found": "identity=9454532,l=big,ton=grand,k=molvi",
"attribute": [
{
"name": "firstname",
"value": [
"Lucas"
]
},
{
"name": "lastname",
"value": [
"Brandon"
]
}
]
}
],
"return": {
"code": 0,
"message": "Success",
"count": 1
}
}
}
Ich habe versucht, verschiedene Ansätze (json, Gson, jayway-JsonPath), aber ich es gelingt nicht, die Werte aus dem "attribute" -Array zu bekommen, nur die aus dem ersten Array. Ich weiß nicht, wie man angibt, dass "Attribut" ein JSONArray und kein JSONObject ist oder wie man den richtigen Pfad zu ihm festlegt. Dies ist der letzte Code, den ich mit dem spielte stoppt, wenn es eine Reihe gründet:
public void String nameObtain (String email) throws IOException{
String link = "http://jsonfile/" + email;
JSONObject json = readJsonFromUrl(link);
JSONObject rootObject = json.getJSONObject("search");
JSONArray firstArray = rootObject.getJSONArray("entry");
for (int i = 0, size = firstArray.length(); i < size; i++) {
JSONObject objectInArray = firstArray.getJSONObject(i);
String[] elementNames = JSONObject.getNames(objectInArray);
System.out.printf("%d ELEMENTS IN CURRENT OBJECT:\n", elementNames.length);
for (String elementName : elementNames) {
String value = objectInArray.getString(elementName);
System.out.printf("name=%s, value=%s\n", elementName, value);
}
}
}
Was Ich mag würde, ist zu tun, um die Werte Lucas oder Brandon zu bekommen. Jede Hilfe wird sehr geschätzt!
Sie wollen also ein JSON-Array bekommen, verwenden aber 'getString'? Verwenden Sie einfach die einfache Methode "get", wenn Sie nicht angeben möchten, welchen Typ Sie erwarten. –
Oder verwenden Sie "getJSONArray" für diejenigen, die Sie wissen, sind JSON-Arrays. –
Können Sie Werte für das Array "entry" zurückholen? Wenn ja, dann sollte es ähnlich dem Array "attribute" sein. 'getJSONArray' Methode ist alles was Sie brauchen. Was immer daraus zurückkommt, kann als JSONObject behandelt und wiederholt werden. – Dadani