我所获得的所有资源都是从JSONObject
获得JSONArray
。但是在这种情况下,我想获得的温度是“温度”。我不认为这是数组的一部分。我该怎么办?
{
"coord":{
"lon":85.17,
"lat":26.67
},
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"base":"stations",
"main":{
"temp":31.09,
"pressure":1004.15,
"humidity":83,
"temp_min":31.09,
"temp_max":31.09,
"sea_level":1010.39,
"grnd_level":1004.15
},
"wind":{
"speed":3.66,
"deg":107.5
},
"rain":{
"3h":0.202
},
"clouds":{
"all":64
},
"dt":1534148929,
"sys":{
"message":0.0048,
"country":"IN",
"sunrise":1534117810,
"sunset":1534165068
},
"id":1273043,
"name":"Dhaka",
"cod":200
}
我已经尝试过-(我是JSON的新手)
JSONObject jsonObject = new JSONObject(s);
JSONObject main = jsonObject.getJSONObject("main");
JSONObject temp = main.getJSONObject("temp");
答案 0 :(得分:1)
假设您使用的是Android(在这里进行适当的标记会有所帮助,因为它取决于您使用的JSON库):
既然您拥有JSONObject main = jsonObject.getJSONObject("main");
,那么您就应该能够执行double temp = main.getDouble("temp");
来降低该main
对象的温度。
如果您查看docs for JSONObject,则可以看到多种获取JSON“原始”字段的方法,例如int
,String
等-并且您需要使用这些来检索所述原始字段,而不是调用getJSONObject()
。
答案 1 :(得分:1)
temp不是JSonObject。您可以将温度设为String或double。因此,请使用以下代码更改代码的最后一行:
String temp = main.getString("temp");
或
double temp = main.getDouble("temp");
答案 2 :(得分:0)
使用“临时”作为键从main
对象获取值
double temp = main.getDouble("temp");