字符串无法转换为JSONObject异常

时间:2016-03-30 11:13:28

标签: android json

新手到Json这里,当我尝试运行以下代码时,我得到一个类型为java.lang.String的值数据库无法转换为JSONObject 错误。我无法理解其他答案就在这里。

       JSONObject jsonObject = new JSONObject(json);
       JSONArray jsonArray = jsonObject.getJSONArray("server_response");
       JSONObject JN = jsonArray.getJSONObject(0);
       String code =JN.getString("code");
       String message = JN.getString("message");
       if (code.equals("reg_true"))
       {
           showDialog("Your Registration has been successful.",message,code);
       }
       else if (code.equals("reg_false"))
       {
           showDialog("Your Registration Failed.",message,code);
       }


   } catch (JSONException e){
       e.printStackTrace();
   }

这是错误

 W/System.err﹕ org.json.JSONException: Value Database of type   java.lang.String cannot be converted to JSONObject
 W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:111)
 W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:160)
 W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:173)
 W/System.err﹕ at com.example.project.BackgroundTask.onPostExecute(BackgroundTask.java:133)
 W/System.err﹕ at com.example.project.BackgroundTask.onPostExecute(BackgroundTask.java:29)

2 个答案:

答案 0 :(得分:1)

您发布的Json无效,修剪{"server_response并关闭花括号。 剩下的Json就是这样,现在有效了,

[{"code":"reg_true","message":"Sucessful registration.Thank you.Enjoy"}]

你可以像这里一样解析它,

JSONArray jsonarray = new JSONArray(json);
JSONObject jsonobject = jsonarray.getJSONObject(0);
String code = jsonobject.getString("code");
String message = jsonobject.getString("message");

更新:

如果您的Json与您评论的那样,那么您可以轻松地检索这个

JSONObject jobject = new JSONObject(json);
JSONArray jsonarray = jobject.getJSONArray("server_response");
JSONObject jsonobject = jsonarray.getJSONObject(0);
String code = jsonobject.getString("code");
String message = jsonobject.getString("message");

答案 1 :(得分:0)

你的json无效。你可以在jsonlint.com上查看你的json 正确的json应该是这样的 {"server_response":{"code":"reg_true","message":"Sucessful registration.Thank you.Enjoy"}} 由于您只使用一个json对象,因此无需创建json数组。

请记住它是以[开头,以]为其json数组结束;用大括号{...}作为其json对象。