2016-04-19 3 views
0

Я имею следующий код:обработки 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); 
} 

И мой Json файл:

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

Когда я запускаю код теперь я получаю следующее сообщение об ошибке:
JSONObject must begin with {

Я понял, что из-за [] мне нужно использовать JSONArray, но если я изменю
JSONObject json = loadJSONObject("january_2016.json");<br>
в JSONArray, я получаю эту ошибку:
The method getJSONObject(int) in the type JSONArray is not applicable for the arguments (String)

Я уверен, что он должен быть простым, но я довольно новым для этого, поэтому заранее спасибо

+0

Возможный дубликат текста [JSONObject должен начинаться с '{'] (http://stackoverflow.com/questions/4773663/jsonobject-text-must-begin-with) – Tuvia

+0

Я не понимаю, что вы имеете в виду, можете ли вы прояснить? – malina

ответ

1

Я думаю, вы непонимание некоторых основ о том, как JSON и Обработка обоих работает.

Давайте рассмотрим пример JSON. A JSONObject представляет собой набор пар ключ/значение, окруженный фигурными скобками {}. Вот JSONObject:

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

Если у вас есть JSONObject, то вы можете получить значение их ключи String.

Вы можете также гнездо JSONObjects так что JSONObject содержит ключ, значение которого само по себе является JSONObject. Как так:

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

Вы также можете иметь JSONArray вместо JSONObject. JSONArray представляет собой набор значений, окруженных квадратных скобках [] Вот JSONArray:

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

JSONArray Этот пример взят из the reference, и он содержит 3 JSONObjects.

Если у вас есть JSONArray, вам необходимо получить значения из определенного индекса.

Теперь давайте посмотрим на ваш JSON:

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

Ваш JSON начинается с квадратной скобкой [, что означает, что это JSONArray.

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

Хорошо, теперь у вас есть JSONArray. Это означает, что вам необходимо получить доступ к данным через определенный индекс int. В вашем случае у вас есть только один индекс, так что индекс 0:

JSONObject jsonObject = jsonArray.getJSONObject(0); 

Переменная jsonObject теперь содержит этот JSON:

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

Здесь вы должны быть в состоянии разобрать JSONObject с помощью функций Я показал вам ваш другой вопрос.

Вы также можете изменить свой файл JSON так, чтобы вы могли использовать его непосредственно как JSONObject.

+1

приятный ответ (+1) –

Смежные вопросы