Json的回应应该如下:
“{\” syncrequest \ “:{\” 用户\ “:{\” @的xmlns:的xsi \ “:\”http://www.w3.org/2001/XMLSchema-instance \”,\ “活性\”:\ “真\”, \ “basedataset \”:\ “假\”},\ “syncversion \”:\ “89 \”,\ “syncdata \”:[{\ “操作\”:\“INSERT 要么 REPLACE \”,\ “表\”:\ “WSInformation \” \ “行\”:[{\ “WS_ID \”:\ “71 \”,\ “WS_ParentOwn \”:空,\ “WS_Notes \”: \ “注意\\” 的\\“VistaStore 舰队\\ “保存\”,\ “CC_ID \”:\ “1 \”,\ “Record_Instance \”:\ “1 \”,\ “Record_LastModified \”:\“2013-11-26T07:51:35.203 \ “}]}]}}”
来自服务器的响应字符串格式。当我使用
转换json格式的上述字符串 JsonObject jObject =new JsonObject(string);
它在字符串中出现未终止字符错误。
任何人都可以帮我解决上述问题。
提前致谢
已编辑:
来自服务器的响应采用输入流的形式。
所以,我曾经使用函数将输入流转换为字符串:
IOUtils.readStream(instream);
然后响应字符串应该是:
字符串响应 =
“{\” syncrequest \ “:{\” 用户\ “:{\” @的xmlns:的xsi \ “:\”http://www.w3.org/2001/XMLSchema-instance \”,\ “活性\”:\ “真\”, \ “basedataset \”:\ “假\”},\ “syncversion \”:\ “89 \”,\ “syncdata \”:[{\ “操作\”:\“INSERT 要么 REPLACE \”,\ “表\”:\ “WSInformation \” \ “行\”:[{\ “WS_ID \”:\ “71 \”,\ “WS_ParentOwn \”:空,\ “WS_Notes \”: \ “注意\\” 的\\“VistaStore 舰队\\ “保存\”,\ “CC_ID \”:\ “1 \”,\ “Record_Instance \”:\ “1 \”,\ “Record_LastModified \”:\“2013-11-26T07:51:35.203 \ “}]}]}}”
通过使用以下函数来形成json对象,我删除了双引号。
res = response.substring(1,response.length() - 1);
并使用以下函数删除字符串中的双引号。
res = response.replace(“\\”“,”\“”);
答案 0 :(得分:0)
不要在转换中使用JsonObject。
JSONObject jObject = new JSONObject(response);
JSONArray jArray = jObject.getJSONArray("syncrequest");
导入这个org.json.JSONObject;
不是com.google.gson.JsonObject;
答案 1 :(得分:0)
我认为它不是一个有效的JSON对象。