所以,我正在尝试从Web服务中检索JSON数据。它通常有效。但是,如果某个变量的值具有双引号作为其内容的一部分,则它不起作用。例如,如果我正在解析此数据:
{"ID":"1057","PlaceTitle":"Place 1","PlaceDetails":"George Bush once said "This is the best dang place in the world""}
我在乔治布什身上得到了一个错误...因为它试图将它作为一个变量来检测,因为它引用了,我相信。抛出此异常:
org.json.JSONException: Unterminated object at character 1418 of
所以我想做的是#34;如果抛出此异常,请将其视为PlaceDetails中的内容,并继续。"知道我怎么能做到这一点吗?
代码:
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
final JSONObject json = jArray.getJSONObject(i);
try {
arrayOfLocationss.add(new Location(context,
json.getInt("ID") json
.getString("PlaceTitle"), json
.getString("PlaceDetails"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
答案 0 :(得分:1)
您需要修复Web服务,以便返回格式正确的JSON。字符串内部的引号需要使用反斜杠进行转义:
{"ID":"1057","PlaceTitle":"Place 1","PlaceDetails":"George Bush once said \"This is the best dang place in the world\""}
答案 1 :(得分:0)
为什么在使用getString
时不要使用双引号?尝试像
arrayOfLocationss.add(new Location(context,
json.getInt("ID") json
.getString("PlaceTitle").toString().replaceAll("\"", "\\\""),
json.getString("PlaceDetails").toString().replaceAll("\"", "\\\""));