我已经在这里查看了其他多个答案,但我仍然无法解决此问题。
我调用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)
谁能看到我在这里缺少的东西?
答案 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);