0

我使用以下代码将字符串转换为 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

我在上面的代码中弄错的任何事情

4

1 回答 1

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();
        }
于 2012-06-18T10:32:34.973 回答