我有json字符串:
String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";
JSONObject users = new JSONObject(response);
JSONArray sub = users.getJSONArray("first");
但是在JSONArray
子目录中,我有错误:
org.json.JSONException 在org.json.JSON.typeMismatch
但是,如果我有
String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"other\"}]}}";
JSONObject users = new JSONObject(response);
JSONArray sub = users.getJSONArray("first");
它没有任何错误。
为什么字符串"jo"
出错?
答案 0 :(得分:1)
您的json字符串错误。没有任何JsonArray
像这样更改字符串:
String jsonString = "{\"first\":[{\"id\":1,\"name\":\"name1\"},{\"id\":2,\"name\":\"name2\"}]}";
JSONObject users = new JSONObject(jsonString);
JSONArray sub = users.getJSONArray("first");
for (int i = 0; i < sub.length(); i++) {
JSONObject user = sub.getJSONObject(i);
String userID = user.gatInt("id");
String userName = user.gatString("name");
}
答案 1 :(得分:0)
首先不是JSONArray,而是JSONObject。因此将其转换为JSONObject,然后从中获取 1 。您将获得JSONArray。
以下是两个json字符串的工作示例:
String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";
//String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"other\"}]}}";
JSONObject users;
try {
users = new JSONObject(jsonString);
users=users.getJSONObject("first");
JSONArray sub = users.getJSONArray("1");
System.out.println(sub.get(0));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出:
{“ name”:“ jo”,“ id”:1}
答案 2 :(得分:0)
您确定由于将字符串更改为“ jo”而收到此类错误,因为这对我来说似乎不是问题。 我对您的代码做了一些修改,效果很好:
String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";
JSONObject users = JSON.parse(jsonString);
JSONArray sub = users.first;