让JSON.typeMismatch尝试将来自HTTP Get的字符串转换为JSON对象

时间:2015-08-16 17:42:31

标签: java android json

我已经在这里查看了其他多个答案,但我仍然无法解决此问题。

我调用PHP restful服务器从数据库中获取JSON字符串。以下是返回的字符串的日志输出:

  

“{\”pat_list \“:[{\”id \“:\”1 \“,\”name \“:\”John Deere \“,\”gender \“:\”M \“, \ “孩子\”:\ “N \”,\ “电子邮件\”:\ “mail@site.com \”,\ “patientid \”:\ “12657 \”,\ “pridiag \”:\“病\ “}]}”

这看起来像有效的JSON(它验证)并且看起来正确地转义给我(它是使用服务器上的PHP中的json_encode创建的)

但是,当我尝试执行此代码时:

    if (json_pat_list != null) {

        Log.d("json_string",json_pat_list);

        try {

            JSONObject jsonObj = new JSONObject(json_pat_list);

我明白了:

  

W / System.err:org.json.JSONException:Value {“pat_list”:[{“id”:“1”,“name”:“John Deere”,“gender”:“M”,“child” “:”“N”,“email”:“mail@site.com”,“patientid”:“12657”,“pridiag”:“Sick”}]}类型java.lang.String无法转换为JSONObject .. .W / System.err:at org.json.JSON.typeMismatch(JSON.java:111)

谁能看到我在这里缺少的东西?

1 个答案:

答案 0 :(得分:0)

您的代码似乎合法。据我所知。我可以建议的是,因为你说它是在PHP服务器上生成的,所以它可能会输入完全错误格式化字符串的字符。

我可以提出两件事:

    if (json_pat_list != null) {

    Log.d("json_string",json_pat_list);

    //Either this

    String formattedString = json_pat_list.replaceAll("\n", "\\n");

     //or you can do this
     String formattedString = json_pat_list.substring(s.indexOf("{")); 

    try {

        JSONObject jsonObj = new JSONObject(json_pat_list);