我对Android比较陌生,我正在尝试解析一些数据,我似乎在LogCat中遇到以下错误:
Unexpected value from nativeGetEnabledTags: 0
Error parsing data org.json.JSONException
我从以下地址获取JSON数据: http://api.wunderground.com/api/180dde448747af27/forecast/q/UK/Bradford.json
我正在使用以下代码提取数据:
JSONArray forecasts = json.getJSONArray("forecast");
for (int i=0;i<forecasts.length();i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = forecasts.getJSONObject(i);
// simpleforecast is a json array
JSONArray forecastday = json.getJSONArray("forecastday");
JSONObject fd = forecastday.getJSONObject(i);
String icon = fd.getString("icon");
map.put("id", String.valueOf(i));
map.put("icon", icon);
mylist.add(map);
}
我认为错误与我的JSON拉动有关,我可能没有正确解析它,但我似乎无法找到正确的方法来解决它。这段代码被try-catch包围,然后我有一个列表适配器,我将代码添加到。
道歉,如果我错过了什么,但我相信这已足够,因为我相信这是错误的来源。
答案 0 :(得分:1)
解析当前json字符串,以便从icon
JSONArray获取forecastday
:
// get Json forecast object
JSONObject forecasts_obj = json.getJSONObject("forecast");
// get Json simpleforecast object
JSONObject simpleforecast_obj = forecasts_obj.getJSONObject("simpleforecast");
// get Json forecastday Array
JSONArray forecastday_arr = simpleforecast_obj.getJSONArray("forecastday");
for (int i=0;i<forecastday_arr.length();i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = forecastday_arr.getJSONObject(i);
String icon = e.getString("icon");
map.put("id", String.valueOf(i));
map.put("icon", icon);
mylist.add(map);
}
答案 1 :(得分:1)
你错误地将forcast标识为JSONArray。
因此,您不应使用JSONArray forecasts = json.getJSONArray("forecast");
来解析预测,而应使用JSONObject forecastObj = json.getJSONObject("forecast")
。但是,forecastday是一个json数组,因此您可以使用forecastObj.getJSONArray("forecastday")
,然后对其进行处理。