Android解析困难

时间:2014-01-09 01:05:34

标签: android json parsing

我在从android解析位于互联网上的json文件时遇到了一些困难。 以下是Json文件的内容:

{
    "cod": "200",
    "message": 0.0803,
    "city": {
        "id": 2643743,
        "name": "London",
        "coord": {
            "lon": -0.12574,
            "lat": 51.50853
        },
        "country": "GB",
        "population": 1000000
    },
    "cnt": 2,
    "list": [
        {
            "dt": 1389182400,
            "temp": {
                "day": 9.72,
                "min": 9.72,
                "max": 11.25,
                "night": 11.25,
                "eve": 9.72,
                "morn": 9.72
            },
            "pressure": 1016.8,
            "humidity": 95,
            "weather": [
                {
                    "id": 500,
                    "main": "Rain",
                    "description": "light rain",
                    "icon": "10d"
                }
            ],
            "speed": 6,
            "deg": 162,
            "clouds": 80,
            "rain": 2
        },
        {
            "dt": 1389268800,
            "temp": {
                "day": 9.75,
                "min": 4.56,
                "max": 11.22,
                "night": 4.56,
                "eve": 6.76,
                "morn": 11.22
            },
            "pressure": 1006.76,
            "humidity": 95,
            "weather": [
                {
                    "id": 500,
                    "main": "Rain",
                    "description": "light rain",
                    "icon": "10d"
                }
            ],
            "speed": 9.16,
            "deg": 267,
            "clouds": 44,
            "rain": 0.5
        }
    ]
}

我想要一些帮助,因为我不知道如何解析列表。我一直在让应用程序崩溃。

2 个答案:

答案 0 :(得分:1)

你必须给我们更多的帮助:你有崩溃日志吗?你有什么尝试?

jsonlint.com确认您的JSON有效。如果我理解您的意图,您可以将其反序列化为JSONObject,如下所示:

JSONObject obj = new JSONObject(myString);

完成此操作后,您可以按如下方式访问值:

double speed = obj.getJSONArray("list")
                            .getJSONObject(2)
                            .getDouble("speed");

答案 1 :(得分:0)

从字符串中创建一个JSON对象,然后只调用您正在寻找的部分的get方法。例如:

JSONObject jsonObject = new JSONObject(jsonString);
Date myDOB = new Date(jsonObject.getLong(DOB_KEY));

对于进一步嵌入的部分,您可以调用getJSONObject(key),然后单独解析该部分。例如:

JSONObject location = jsonObject.getJSONObject(LOCATION_KEY);
myLocation = new Location("");
myLocation.setLatitude(location.getDouble(LOCATION_LATITUDE_KEY));
myLocation.setLongitude(location.getDouble(LOCATION_LONGITUDE_KEY));