尝试解析HttpResponse

时间:2017-01-25 00:16:23

标签: android json

The json in json lint 我发现的每个类似的响应都有人错误地使用了JSONArray。我正在使用JSONObject。

HttpResponse response = httpClient.execute(httpGet);
String json_string = EntityUtils.toString(response.getEntity(), "UTF-8");

updateBoundaries(new JSONObject(json_string));
System.out.println(json_string);

获取错误

  

org.json.JSONException:Value {“TopLeftCorner”:{“Longitude”:0.0,“Latitude”:100.0},“TopRightCorner”:{“Longitude”:100.0,“Latitude”:100.0},“BottomLeftCorner” :{“经度”:0.0,“纬度”:0.0},“BottomRightCorner”:{“经度”:100.0,“纬度”:0.0}}类型java.lang.String无法转换为JSONObject

但是,当我将JSON粘贴到JSON Lint时,它完全没问题。当我打印出它试图解析的字符串时,它看起来像

  

“{\” TopLeftCorner \ “:{\” 经度\ “:0.0,\” 纬度\ “:100.0},\” TopRightCorner \ “:{\” 经度\ “:100.0,\” 纬度\“: 100.0},\ “BottomLeftCorner \”:{\ “经度\”:0.0,\ “纬度\”:0.0},\ “BottomRightCorner \”:{\ “经度\”:100.0,\ “纬度\”:0.0} }“

看起来它应该是可接受的JSON,但JSONObject由于某种原因无法解析它。发生了什么事?

编辑:stacktrace

W/System.err: org.json.JSONException: Value {"TopLeftCorner":{"Longitude":0.0,"Latitude":100.0},"TopRightCorner":{"Longitude":100.0,"Latitude":100.0},"BottomLeftCorner":{"Longitude":0.0,"Latitude":0.0},"BottomRightCorner":{"Longitude":100.0,"Latitude":0.0}} 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.chan.locationapiapp.MainActivity$1$1.run(MainActivity.java:62)

W/System.err:     at java.lang.Thread.run(Thread.java:761)

1 个答案:

答案 0 :(得分:0)

事实证明,我正在击中的服务器在字符串周围产生了一对额外的引号(&#34;&#34; STRING&#34;&#34;)我不得不更换所有的反斜杠\用空字符,然后它就能解析了。