2016-04-19 19 views
0

ich den folgenden Code habe:Verarbeitung JSONArray, JSONObject

JSONObject json; 
int max; 
void setup() { 
    size(500,500); 

JSONObject json = loadJSONObject("january_2016.json"); 
JSONObject maxTemperature = json.getJSONObject("Max Temperature"); 
int max = maxTemperature.getInt("max"); 

    print(max); 
} 

void draw(){ 

    ellipse(max, 10, 100, 100); 
} 

Und meine Json-Datei:

[ 
    { 
    "Max Temperature": { 
     "max": "18", 
     "avg": "6", 
     "min": "-2" 
    } 
] 

Wenn ich den Code ausführen jetzt bekomme ich folgende Fehlermeldung:
JSONObject must begin with {

Ich habe verstanden, dass wegen der [] ich JSONArray verwenden muss, aber wenn ich
JSONObject json = loadJSONObject("january_2016.json");<br>ändernzu JSONArray, bekomme ich diesen Fehler:
The method getJSONObject(int) in the type JSONArray is not applicable for the arguments (String)

Ich bin sicher, es muss einfach sein, aber ich bin ziemlich neu in diesem, so Dank im Voraus

+0

Mögliche Duplikate von [JSONObject Text muss mit '{' beginnen] (http://stackoverflow.com/questions/4773663/jsonobject-text-must-begin-with) – Tuvia

+0

Ich verstehe nicht, was Sie meinen, können Sie klären? – malina

Antwort

1

Ich glaube, Sie einige Grundlagen sind Missverständnis darüber, wie JSON und Beide Arbeiten verarbeiten.

Schauen wir uns ein Beispiel JSON an. A JSONObject ist eine Gruppe von Schlüssel/Wert-Paaren, die von geschweiften Klammern {} umgeben sind. Hier ist ein JSONObject:

{ 
    "max": "18", 
    "avg": "6", 
    "min": "-2" 
} 

Wenn Sie eine JSONObject haben, dann können Sie die Werte in ihren String Schlüssel zu bekommen.

Sie können auch Nest JSONObjects, so dass ein JSONObject einen Schlüssel enthält, dessen Wert sich ein JSONObject. Wie so:

{ 
    "Max Temperature": { 
     "max": "18", 
     "avg": "6", 
     "min": "-2" 
    } 
} 

können Sie haben auch eine JSONArray anstelle eines JSONObject. JSONArray A ist ein Satz von in eckigen Klammern Wert [] Hier ist ein JSONArray:

[ 
    { 
    "id": 0, 
    "species": "Capra hircus", 
    "name": "Goat" 
    }, 
    { 
    "id": 1, 
    "species": "Panthera pardus", 
    "name": "Leopard" 
    }, 
    { 
    "id": 2, 
    "species": "Equus zebra", 
    "name": "Zebra" 
    } 
] 

Dieses Beispiel JSONArray von the reference genommen, und es enthält 3 JSONObjects.

Wenn Sie eine JSONArray haben, dann müssen Sie die Werte von einem bestimmten Index erhalten.

Lassen Sie uns jetzt auf Ihre JSON aussehen:

[ 
    { 
    "Max Temperature": { 
     "max": "18", 
     "avg": "6", 
     "min": "-2" 
    } 
] 

Ihre JSON beginnt mit einer eckigen Klammer [, was bedeutet, es ist ein JSONArray ist.

JSONArray jsonArray = loadJSONArray("january_2016.json"); 

Okay, jetzt haben Sie Ihre JSONArray. Das bedeutet, dass Sie über einen bestimmten int Index auf die Daten zugreifen müssen. In Ihrem Fall, dass Sie nur einen Index haben, so ist es Index 0:

JSONObject jsonObject = jsonArray.getJSONObject(0); 

Die jsonObject Variable enthalten jetzt dieses JSON:

{ 
"Max Temperature": { 
    "max": "18", 
    "avg": "6", 
    "min": "-2" 
} 

Von hier aus sollten Sie in der Lage sein, die JSONObject mit den Funktionen zum Parsen Ich habe dir deine andere Frage gezeigt. Sie können auch einfach Ihre JSON-Datei ändern, so dass Sie sie direkt als JSONObject verwenden können.

+1

nette Antwort (+1) –

Verwandte Themen