0

我有以下问题:我尝试在 Android 中解析的服务器上有一个 JSON 文件。但我收到以下错误消息:

06-13 19:24:39.025:E/JSON Parser(17169):解析数据 org.json.JSONException 时出错:java.lang.String 类型的值  无法转换为 JSONObject

这是我的 JSON 文件:

    {
"settings":[
  {
     "rss":"true",
     "rss_feed":"http://test.com/rss.rss"
  }
],
 "map_locations":[
  {
     "title":"Büro Toronto",
     "address":"123 Younge Street Toronto"
  },
  {
     "title":"Büro New York",
     "address":"Time Square New York"
  }
]
}

这是我的代码:

        JSONParser jParser = new JSONParser();

        JSONObject json = jParser.getJSONFromUrl(SETTINGS_URL);

        try {
            JSONObject c = json.getJSONArray("settings").getJSONObject(0);

            rss = c.getBoolean("rss");

            JSONArray jMap = json.getJSONArray("map_locations");
            for (int i = 0; i < jMap.length(); i++) {
                JSONObject c2 = jMap.getJSONObject(i);

                String map_title = c2.getString("title");
                String map_address = c2.getString("address");

                mapListTitle.add(map_title);
                mapListAddress.add(map_address);
            }

            URL_TO_RSSFEED = c.getString("rss_feed");
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (NullPointerException e) {
            e.printStackTrace();
        }

提前感谢您的帮助!

奇怪的是我没有改变任何东西(据我所知)并且它之前确实有效。如果您需要更多信息,请告诉我!

4

2 回答 2

2

哇,好的,我找到了答案...不得不改变

BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);

to BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"), 8);

奇怪的是,它确实在几个小时前使用相同的设置工作。

但是非常感谢您的帮助!

于 2012-06-13T19:57:56.733 回答
0

我运行了这段代码,它运行良好。

String jsonStr = "{\"settings\":[{\"rss\":\"true\",\"rss_feed\":\"http://test.com/rss.rss\"}],\"map_locations\":[{\"title\":\"Büro Toronto\",\"address\":\"123 Younge Street Toronto\""
              +"},{\"title\":\"Büro New York\",\"address\":\"Time Square New York\"}]}";
    try {
    JSONObject json = new JSONObject(jsonStr);


        JSONObject c = json.getJSONArray("settings").getJSONObject(0);

        boolean rss = c.getBoolean("rss");

        JSONArray jMap = json.getJSONArray("map_locations");
        for (int i = 0; i < jMap.length(); i++) {
            JSONObject c2 = jMap.getJSONObject(i);

            String map_title = c2.getString("title");
            String map_address = c2.getString("address");

           /* mapListTitle.add(map_title);
            mapListAddress.add(map_address);*/
        }

       String URL_TO_RSSFEED = c.getString("rss_feed");
    } catch (JSONException e) {
        e.printStackTrace();
    } catch (NullPointerException e) {
        e.printStackTrace();  
}

所以我只能得出结论,jsonObject您创建的第一个可能存在一些错误,我正在谈论这一行:

JSONObject json = jParser.getJSONFromUrl(SETTINGS_URL);

于 2012-06-13T18:24:08.757 回答