尝试在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) {
}
答案 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区块中。