在android中读取嵌套的json字符串

时间:2012-06-18 10:25:31

标签: java android json

我使用以下代码将字符串转换为json并解析它。

String sb= {"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"api_key": "c87391754b522d0c83b2c8b5e4c8cfd614559632deee70fdf1b48d470307e40e", "homeAddress": "kathmandu", "resource_uri": "/api/ca/entry/1/", "username": "sumit"}]}
    try {

                    JSONObject jsonObject = new JSONObject(sb);
                    JSONObject object = jsonObject.getJSONObject("objects");  
                    String api_key= object.getString("api_key");  
                    Toast.makeText(HelloWorldActivity.this, api_key, Toast.LENGTH_SHORT).show();

        } catch (JSONException e) {
                             e.printStackTrace();
                            }

在一些教程之后,我试图解析json,但我无法解析它。例如:我想将api_key作为c87391754b522d0c83b2c8b5e4c8cfd614559632deee70fdf1b48d470307e40e返回

我在上面代码中误认的任何事情

1 个答案:

答案 0 :(得分:2)

始终使用JSONLint或类似网站来格式化您的JSON。

您的JSON就像这样

{
    "meta": {
        "limit": 20,
        "next": null,
        "offset": 0,
        "previous": null,
        "total_count": 1
    },
    "objects": [
        {
            "api_key": "c87391754b522d0c83b2c8b5e4c8cfd614559632deee70fdf1b48d470307e40e",
            "homeAddress": "kathmandu",
            "resource_uri": "/api/ca/entry/1/",
            "username": "sumit"
        }
    ]
}

这里“对象”将返回数组而不是对象。

将您的代码更改为以下内容。

    try {

            JSONObject jsonObject = new JSONObject(sb);
            JSONArray array = jsonObject.getJSONArray("objects");

            String key = array.getJSONObject(0).getString("api_key");
            String uname = array.getJSONObject(0).getString("username");
            Toast.makeText(HelloWorldActivity.this, username + " " + key,
                    Toast.LENGTH_SHORT).show();

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }