Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从返回的openweathermap json数据访问rain_Java_Android_Json_Openweathermap - Fatal编程技术网

Java 从返回的openweathermap json数据访问rain

Java 从返回的openweathermap json数据访问rain,java,android,json,openweathermap,Java,Android,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": [ {

这是我的
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
    }
  ]
}
我正在尝试访问rain值“rain”: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);
}
JSONObject topLevel=新的JSONObject(builder.toString());
JSONArray ListArray=topLevel.getJSONArray(“列表”);
weather=String.valueOf(ListArray);
对于(int x=0;x

非常感谢您的帮助。

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

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);

     }
您定义了类结构,它将被检索到的数据填充

这个网站上有一个关于这个主题的指南:

jsonobjecttoplevel=newjsonobject(builder.toString());
JSONArray ListArray=topLevel.getJSONArray(“列表”);
weather=String.valueOf(ListArray);
对于(int x=0;x

您只需要使用myobj.getDouble(“rain”)而不是myobj.getInt(“rain”),因为rain的值不是整数。

现在您的日志中出现了什么?它返回了JSON数据中的所有内容,但在我尝试将rain添加到文本字段时告诉我rain不在那里,我已经修复了它,谢谢
    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);
}