Java 什么';字符串有什么问题;jo";当解析json时?

Java 什么';字符串有什么问题;jo";当解析json时?,java,android,json,Java,Android,Json,我有一个json字符串: String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}"; JSONObject users = new JSONObject(response); JSONArray sub = users.getJSONArray("first"); String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]

我有一个json字符串:

String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";

JSONObject users = new JSONObject(response);
JSONArray sub = users.getJSONArray("first");
      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();
    }
但是在
JSONArray
sub中,我有一个错误:

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”我有一个错误?

您的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");
}
String jsonString=“{\'first\':[{\'id\':1,\'name\':\'name1\',{\'id\':2,\'name\':\'name2\'}”;
JSONObject用户=新的JSONObject(jsonString);
JSONArray sub=users.getJSONArray(“第一”);
对于(int i=0;i
首先不是JSONArray,而是JSONObject。因此,将其强制转换为JSONObject,然后从中获得1。您将获得JSONArray

下面是两个json字符串的工作示例:

String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";

JSONObject users = new JSONObject(response);
JSONArray sub = users.getJSONArray("first");
      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}

您确定由于字符串更改为“jo”而出现此类错误,因为我觉得这似乎没有问题。 我对您的代码做了一些修改,效果很好:

String jsonString = "{\"first\":{\"1\":[{\"id\":1,\"name\":\"jo\"}]}}";

JSONObject users = JSON.parse(jsonString); 
JSONArray sub = users.first;

你确定???这里没有任何问题是的,我正在Android中测试。除非在第一个语法中有两个单引号(“”),否则这里没有问题。使用jsonlint或codebeautify验证您的json。我没有看到您在构造JSONObject或解析JSONArray时使用
jsonString
{“1\”:[{“id\”:1,“name\”:“other\”}
不是JSONArray,而是JSONObject。两个
jsonString
示例都失败,并出现相同的错误。为什么这里有
main(String[]args)
函数?AndroidI给出了一个工作示例。它不是平台specific@ArashHatami在哪里写的是与android相关的问题?@vikastandon问题的
android
标签。也。