我有以下问题: 我在服务器上有一个JSON文件,我尝试在Android中解析。但我收到以下错误消息:
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();
}
提前感谢您的帮助!
奇怪的是,我没有改变任何东西(根据我的知识),它之前确实有效。 如果您需要更多信息,请告诉我们!
答案 0 :(得分:2)
哇好我找到了答案......不得不改变
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
到
to BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"), 8);
奇怪的是,它确实在几个小时之前使用相同的设置工作。
但非常感谢你的帮助!
答案 1 :(得分: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);