解析json时字符串“ jo”有什么问题?

时间:2018-06-23 19:02:59

标签: java android json

我有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"出错?

3 个答案:

答案 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;