2016-08-24 136 views
-2

我无法使用java从下面的json代码中检索温度。我能够检索位置,但是当我试图让温度我收到错误JSONObject["temp"] not a string.如何在JAVA中解析JSON响应

+1

您应该首先关心正确管理您的资源......您没有关闭它们。当然,这只是一个“主要”,但是开始并且基本正确。 – fge

+2

使用类似于fasterxml Jackson的库:https://github.com/FasterXML/jackson – duffymo

+0

响应来自API请求。我不能修改资源 – user1798578

回答

1

您需要将功能更改为.getDouble温度没有返回一个字符串值类型。

所以它应该是这样的:

obj.getJSONObject( “主”)getDouble( “TEMP”)

我编辑的答案。

+0

该解决方案适用于我。我从来没有想过使用双。我只是假设所有的数据都会以字符串形式返回。 – 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是double类型。

JSONObject main = obj.getJSONObject("main"); 
String temp = main.getDouble("temp"); 
System.out.println("Current temprature"+temp);