从JSONObject父对象获取JSONObject

时间:2018-08-13 09:26:09

标签: java android json

我所获得的所有资源都是从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");

3 个答案:

答案 0 :(得分:1)

假设您使用的是Android(在这里进行适当的标记会有所帮助,因为它取决于您使用的JSON库):

既然您拥有JSONObject main = jsonObject.getJSONObject("main");,那么您就应该能够执行double temp = main.getDouble("temp");来降低该main对象的温度。

如果您查看docs for JSONObject,则可以看到多种获取JSON“原始”字段的方法,例如intString等-并且您需要使用这些来检索所述原始字段,而不是调用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");