在Java中解析2d Json

时间:2017-09-28 20:17:07

标签: java android json

尝试在java中解析这种类型的json格式

{
"output": "success",
"result": [
    {
        "id": 1,
        "label": "name",

    },
    {
        "id": 2,
        "label": "name_2",

    }
]
}

我得到这种类型的json格式,现在我要做的是首先检查output.equalsIgnoreCase("success)"是否为true然后解析第二个结果数组。 这是我到目前为止尝试过的。

try {
  JSONArray myJson = new JSONArray(response);
  String status = myJson.getString(Integer.parseInt("output"));
  if(status.equalsIgnoreCase("success")) {
    for (int i = 0; i < myJson.length(); i++) {
      JSONObject obj = myJson.getJSONObject(i);
      name.add(obj.getString("label"));
    }
    Log.e("list" , name.toString());
  }
} catch (Exception e) {
}

2 个答案:

答案 0 :(得分:0)

    String responceStr = ...; // here is your full responce string
    try {
        JSONObject responce = new JSONObject(responceStr);
        String status = responce.getString("output");
        if ("success".equalsIgnoreCase(status)) {
            JSONArray result = responce.getJSONArray("result");
            for (int i=0; i < result.length(); i++){
                JSONObject jsonPair = result.getJSONObject(i);
                int id = jsonPair.getInt("id");
                String label = jsonPair.getString("label");
            }
        }
    } catch (JSONException e){

    }

Integer.parseInt("123") - 没问题。

Integer.parseInt("output") - 不行。

因为Integer.parseInt()解析整数的字符串表示形式。 “output”字符串不表示整数。

答案 1 :(得分:0)

响应是JSONObject,而不是JSONArray(它包含在大括号之间)。该数组是名为结果的字段。  因此,在检查成功字段后,将myJson更改为JSONObject, 创建一个新变量

 JSONArray resultArray = myJson.getArray("result");

并迭代此而不是myJson。此外,您不应该丢弃异常,因为堆栈跟踪可以提供有关问题的一些提示。你可以添加

e.printStackTrace();

在catch区块中。