从返回openweathermap JSON数据

问题描述:

访问雨这是我JSON从返回openweathermap JSON数据

{ 
    "city": { 
    "id": 2961297, 
    "name": "Swords", 
    "coord": { 
     "lon": -6.21806, 
     "lat": 53.459721 
    }, 
    "country": "IE", 
    "population": 0 
    }, 
    "cod": "200", 
    "message": 0.3535, 
    "cnt": 1, 
    "list": [ 
    { 
     "dt": 1481025600, 
     "temp": { 
     "day": 284.68, 
     "min": 284.68, 
     "max": 285.36, 
     "night": 285.36, 
     "eve": 284.8, 
     "morn": 284.68 
     }, 
     "pressure": 1028.26, 
     "humidity": 95, 
     "weather": [ 
     { 
      "id": 500, 
      "main": "Rain", 
      "description": "light rain", 
      "icon": "10d" 
     } 
     ], 
     "speed": 9.01, 
     "deg": 186, 
     "clouds": 92, 
     "rain": 0.5 
    } 
    ] 
} 

我试图访问雨值“雨”:0.5如被看见在返回JSON数据上面我不确定究竟如何做这是因为我没有太多的使用JSON数据的经验。

这是我的代码,

JSONObject topLevel = new JSONObject(builder.toString()); 
JSONArray ListArray = topLevel.getJSONArray("list"); 
weather = String.valueOf(ListArray); 

for(int x = 0;x < ListArray.length();x++) { 

    JSONObject myObj = ListArray.getJSONObject(x); 
    myObj.getInt("rain"); 
    Log.d("TODAYS Rain"+rain,""); 
    //System.out.Print("Current Weather" +id+main+icon+dscription+rain); 
} 

任何帮助是极大的赞赏。

+0

什么现在进入你的日志? –

+0

这是从JSON数据返回的所有内容,但告诉雨不存在,当我试图将它放到一个textfield我已经修复它谢谢 –

JSONObject topLevel = new JSONObject(builder.toString()); 

JSONArray listArray = topLevel.getJSONArray("list"); 
JSONObject firstObject = (JSONObject)listArray.get(0); 
Double rain = firstObject.getDouble("rain"); 
System.out.println("TODAYs rain :" + rain); 

    } 

解析Json最简单的方法是使用将Json映射到对象实例的POJO类。

您可以定义类结构并将其填入检索的数据。

有本网站对同一主题的指南:作为价值http://www.ssaurel.com/blog/learn-how-to-parse-json-in-android-with-gson/

JSONObject topLevel = new JSONObject(builder.toString()); 
JSONArray ListArray = topLevel.getJSONArray("list"); 
weather = String.valueOf(ListArray); 

for(int x = 0;x < ListArray.length();x++) { 
    JSONObject myObj = ListArray.getJSONObject(x); 
    myObj.getDouble("rain"); 
    Log.d("TODAYS Rain"+rain,""); 
    //System.out.Print("Current Weather" +id+main+icon+dscription+rain); 
} 

你只需要使用myobj.getDouble(“雨”),而不是myobj.getInt(“雨”)雨不是整数。