java.lang.String无法转换为JSONObject

时间:2012-10-10 11:18:36

标签: java android json

在我的android应用程序中,我调用一个webservice,它返回一个jsonobject。在设备中我得到一个像这样的响应..

"{  \"Time_Stamp\" : \"10/10/2012 4:26 PM\",  \"records\" : [ {    \"'Name'\" : \"'LD-00000002'\",    \"'Appointment_Date_Time'\" : \"'null'\",    \"'Phone'\" : \"'9909955555'\",    \"'Home_Country_Address'\" : \"'null'\",    \"'Occupation'\" : \"'null'\",    \"'SR_Appointment_Status'\" : \"'Open'\",    \"'Id'\" : \"'a0OE0000001iLynMAE'\",    \"'SR_Appointment_Comment'\" : \"'testing'\",    \"'ProductsOfInterest'\" : \"'null'\",    \"'ActivityName'\" : \"'Sales'\",    \"documentsList\" : [ ]  }, {    \"'Name'\" : \"'LD-00000002'\",    \"'Appointment_Date_Time'\" : \"'null'\",    \"'Phone'\" : \"'9909955555'\",    \"'Home_Country_Address'\" : \"'null'\",    \"'Occupation'\" : \"'null'\",    \"'SR_Appointment_Status'\" : \"'Open'\",    \"'Id'\" : \"'a0OE0000001iLynMAE'\",    \"'SR_Appointment_Comment'\" : \"'testing'\",    \"'ProductsOfInterest'\" : \"'null'\",    \"'ActivityName'\" : \"'Sales'\",    \"documentsList\" : [ {      \"numberOfImages\" : 3,      \"Name\" : \"new document\",      \"Mandatory\" : false,      \"FilePath\" : null,      \"Category\" : null    } ]  } ]}"

我尝试将其转换为像这样的对象

  JSONObject jsonObj=new JSONObject(objMngr.getResponse());

转换它时抛出一个异常“java.lang.String无法转换为JSONObject”......下面是它的确切异常。这是什么原因以及如何解决这个问题?

 {  "Time_Stamp" : "10/10/2012 4:26 PM",  "records" : [ {    "'Name'" : "'LD-00000002'",    "'Appointment_Date_Time'" : "'null'",    "'Phone'" : "'9909955555'",    "'Home_Country_Address'" : "'null'",    "'Occupation'" : "'null'",    "'SR_Appointment_Status'" : "'Open'",    "'Id'" : "'a0OE0000001iLynMAE'",    "'SR_Appointment_Comment'" : "'testing'",    "'ProductsOfInterest'" : "'null'",    "'ActivityName'" : "'Sales'",    "documentsList" : [ ]  }, {    "'Name'" : "'LD-00000002'",    "'Appointment_Date_Time'" : "'null'",    "'Phone'" : "'9909955555'",    "'Home_Country_Address'" : "'null'",    "'Occupation'" : "'null'",    "'SR_Appointment_Status'" : "'Open'",    "'Id'" : "'a0OE0000001iLynMAE'",    "'SR_Appointment_Comment'" : "'testing'",    "'ProductsOfInterest'" : "'null'",    "'ActivityName'" : "'Sales'",    "documentsList" : [ {      "numberOfImages" : 3,      "Name" : "new document",      "Mandatory" : false,      "FilePath" : null,      "Category" : null    } ]  } ]} of type java.lang.String cannot be converted to JSONObject

5 个答案:

答案 0 :(得分:1)

  JSONObject jsonObj=new JSONObject(objMngr.getResponse().toString().replace("\\", " "));

你的jsonString似乎没问题。但是,您的响应类型可能不是字符串。试试吧。 问题在于服务器发送的已经转义的引号。

答案 1 :(得分:0)

首先将您的回复转换为字符串,然后尝试创建 JSONObject

答案 2 :(得分:0)

我认为,getResponse()已经是字符串但响应无效JSON。如果响应不是字符串,则可以使用toString()方法转换字符串。

答案 3 :(得分:0)

你的字符串似乎有一些隐藏的字符。 试试这个

return new JSONObject(json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1));

答案 4 :(得分:0)

好像你已经在服务器端将对象转储到JSON字符串两次。

object --dumps() - > json string --dumps() - > json中的一个字符串

所以你应该删除第二次转储。

否则你可以通过这种方式取消你的字符串How to unescape a Java string literal in Java?

我认为第一种方式更好,更容易。