2016-08-24 3 views
-2

У меня возникли проблемы с извлечением температуры из json-кода ниже с помощью java. Я в состоянии получить место, но когда я пытаюсь получить температуру я получаю ошибку JSONObject["temp"] not a string.Как разобрать ответ JSON в JAVA

+1

Вы должны сначала беспокоиться о правильном управлении своими ресурсами ... Вы не закрываете никого из них. Несомненно, это только «главное», но начать и получить основы. – fge

+2

Используйте библиотеку, например, quickxml Jackson: https://github.com/FasterXML/jackson – duffymo

+0

Ответ от запроса API. Я не могу изменить ресурсы – user1798578

ответ

1

Вам необходимо изменить вашу функцию на .getDouble. Temp не возвращается как строковый тип значения.

Так должно быть, как:.

obj.getJSONObject ("главный") getDouble ("Темп")

Я редактировать ответ.

+0

Это решение сработало для меня. Я никогда не думал об использовании двойника. Я просто предположил, что все данные будут возвращены как String. – user1798578

+0

большой. вы должны выбрать это как ответ. –

+0

будет делать ... это не позволит мне сразу же выбрать ответ – user1798578

0

Вы температура под main объект JSON, но вы пытаетесь получить непосредственно, изменение кода ниже:

String temp = obj.getString("temp"); 

нравиться это:

JSOnObject main = obj.getJSONObject("main"); 
String temp = main.getString("temp"); 
System.out.println("The current temperature is -"+temp); 

Это будет работать.

+0

. Также можно использовать 'JSONArray' здесь, чтобы сделать что-то вроде' JSONArray results = json.getJSONArray («main»); 'и затем' results.getString ("temp"); ' – px06

+0

@ px06 нет, что не сработает, потому что main не является JSONArray. –

0

Измените main.getString на main.getDouble, потому что temprature - это двойной тип.

JSONObject main = obj.getJSONObject("main"); 
String temp = main.getDouble("temp"); 
System.out.println("Current temprature"+temp); 
Смежные вопросы