在Android App中检测并跳过JSON数据中的双引号

时间:2014-08-15 18:28:04

标签: android json

所以,我正在尝试从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();
        }

2 个答案:

答案 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("\"", "\\\""));