在我的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
答案 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?。
我认为第一种方式更好,更容易。