转换String时的org.json.JSON.typeMismatch

时间:2012-05-23 04:50:06

标签: java android json

我正在尝试在Android应用中转换以下JSON:

[
    {
        "patient_id": "16",
        "patient_firstname": "Ion",
        "patient_name": "Vasilescu",
        "location": "Cardiologie, Salon 4, Pat 2"
    },
    {
        "patient_id": "22",
        "patient_firstname": "Claudiu",
        "patient_name": "Popovici",
        "location": "Pneumologie, Salon 5, Pat 5"
    },
    {
        "patient_id": "15",
        "patient_firstname": "Monica",
        "patient_name": "Suciu",
        "location": "Cardiologie, Salon 4, Pat 2"
    }
]

我已阅读过simillar问题和答案,但就我而言,我没有看到任何语法问题。我已使用JSONLint检查了JSON,并且验证成功。

我的java代码如下:

public JSONObject toJson(String jString){
    System.out.println("I've got"+jString+"*");

    try {
        return new JSONObject(jString);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println("Error while converting to JSONObject");
    }

    return null;
}

有人有关于如何摆脱我的错误的建议吗?或者如何实施更好的解决方案?感谢。

3 个答案:

答案 0 :(得分:4)

将JSONObject替换为JSONArray,因为它是一个数组!

答案 1 :(得分:3)

你得到的结果是JSon数组而不是JSon字符串,所以试着改变slass

您的代码:

public JSONObject toJson(String jString){
    System.out.println("I've got"+jString+"*");

    try {
        return new JSONObject(jString);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println("Error while converting to JSONObject");
    }

    return null;
}

修改后:

public JSONObject toJson(String jString){
    System.out.println("I've got"+jString+"*");

    try {
        return new JSONArray(jString);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println("Error while converting to JSONObject");
    }

    return null;
}

答案 2 :(得分:2)

请参阅here您的json仅包含JsonArray列表,因此只需将String转换为JSONArray而不是JSONObject

public JSONArray toJson(String jString){
    System.out.println("I've got"+jString+"*");

    try {
        return new JSONArray(jString);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println("Error while converting to JSONArray");
    }

    return null;
}