2016-04-01 3 views
3

Я создал .json файл:Синтаксический файл JSON в Java с помощью JSON-простой

{ 
    "numbers": [ 
    { 
     "natural": "10", 
     "integer": "-1", 
     "real": "3.14159265", 
     "complex": { 
     "real": 10, 
     "imaginary": 2 
     }, 
     "EOF": "yes" 
    } 
    ] 
} 

, и я хочу, чтобы разобрать его с помощью Json Простой, для того, чтобы извлечь содержимое из «природного» и «мнимой».

Это то, что я написал до сих пор:

JSONParser parser = new JSONParser(); 
Object obj = parser.parse(new FileReader("...")); //the location of the file 
JSONObject jsonObject = (JSONObject) obj; 
String natural = (String) jsonObject.get("natural"); 
System.out.println(natural); 

Проблема заключается в том, что значение естественным является «нулевым», а не «10». То же самое происходит, когда я пишу jsonObject.get («мнимый»).

Я просмотрел многие веб-сайты (включая StackOverflow), я пошел так же, как написано большинством людей, но я не могу исправить эту проблему.

ответ

3

Необходимо сначала найти JSONObject в массиве. Вы пытаетесь найти поле natural верхнего уровня JSONObject, в котором содержится только поле numbers, поэтому оно возвращается null, потому что не найдено natural.

Чтобы исправить это, вы должны сначала получить массив чисел.

Попробуйте вместо этого:

JSONParser parser = new JSONParser(); 
Object obj = parser.parse(new FileReader("...")); //the location of the file 
JSONObject jsonObject = (JSONObject) obj; 
JSONArray numbers = (JSONArray) jsonObject.get("numbers"); 

for (Object number : numbers) { 
    JSONObject jsonNumber = (JSONObject) number; 
    String natural = (String) jsonNumber.get("natural"); 
    System.out.println(natural); 
} 
+0

Спасибо! Я смотрел это часами! – George

+0

Как насчет «воображаемого»? Должен ли я сделать еще один JSONArray complex = (JSONArray) jsonObject.get («мнимый»); 'в цикле for внутри цикла for, который вы написали? – George

+1

Вы можете получить «воображаемое» поле, вызвав jsonNumber.get («мнимый») в том же цикле, что и естественный. –

1

Объект в вашем файле имеет ровно одно свойство с именем numbers.
Недвижимость natural.

Возможно, вы захотите изучить объекты внутри этого массива.