2014-08-27 4 views
0

У меня есть следующие JSONArray:Decode JSON возвращает нуль в Java

[ 
    { 
     "Lng":17.908817, 
     "name":"S1", 
     "id":1, 
     "sensor:":[ 
     "Temperature", 
     "Wind" 
     ], 
     "Lat":47.089492 
    }, 
    { 
     "Lng":17.908458, 
     "name":"S2", 
     "id":2, 
     "sensor:":[ 
     "Temperature", 
     "Wind", 
     "Humidity" 
     ], 
     "Lat":47.089246 
    }, 
    { 
     "Lng":17.908222, 
     "name":"S3", 
     "id":3, 
     "sensor:":[ 
     "Wind" 
     ], 
     "Lat":47.089662 
    } 
] 

я могу разделить его на JSONObject, но если я пытаюсь разделить Object она возвращает null.

Мой код:

Object object = JSONValue.parse(result); 
    JSONArray array = (JSONArray)object; 
    for(int i = 0 ; i < array.size(); i++){ 
     System.out.println(array.get(i)); 

     JSONObject jsonObject = (JSONObject)array.get(i); 

     for(int j = 0 ; j < jsonObject.size(); j++){ 
      System.out.println(jsonObject.get(j)); 

     } 

    } 

Результат:

{"Lng":17.908817,"name":"S1","sensor:":["Temperature","Wind"],"id":1,"Lat":47.089492} 
null 
null 
null 
null 
null 
{"Lng":17.908458,"name":"S2","sensor:":["Temperature","Wind","Humidity"],"id":2,"Lat":47.089246} 
null 
null 
null 
null 
null 
{"Lng":17.908222,"name":"S3","sensor:":["Wind"],"id":3,"Lat":47.089662} 
null 
null 
null 
null 
null 

ответ

3

JSONObject (объект JSON) не индексируемый. Элементы неупорядочены. Что вы пытаетесь сделать

System.out.println(jsonObject.get(j)); 

не имеет смысла. Получайте пары имени и имени через их имена.

+0

Спасибо за помощь – Duncan

+0

@ user3768431 Массив имеет имя 'sensor', так что вы можете получить доступ к нему с' jsonObject.get («датчик») '. –

+0

Я понял, после того как я поставил вопрос. – Duncan

0

Вы можете использовать:

Iterator<?> keys = jsonObject.keys(); 

while(keys.hasNext()){ 
    String key = (String)keys.next(); 
    // use jsonObject.get(key) 
} 

вместо этого "j".

0

Попробуйте получить доступ к JSONObject свойств через свои ключи:

JSONArray array = JSONValue.parse(result); 
for(int i = 0 ; i < array.size(); i++) 
{ 
    System.out.println(array.get(i)); 
    JSONObject jsonObject = (JSONObject) array.get(i); 
    int id = jsonObject.getInt("id"); 
    String lng = jsonObject.getString("Lng"); 
    String lat = jsonObject.getString("Lat"); 
    Object sensor = jsonObject.getString("sensor"); 
    String name = jsonObject.getString("name"); 
    System.out.println(id); 
    System.out.println(name); 
    System.out.println(sensor); 
    System.out.println(lat); 
    System.out.println(lon); 
} 
Смежные вопросы