0

我对 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 包围,然后我有一个列表适配器,我将代码添加到其中。

如果我遗漏了任何东西,我深表歉意,但我相当有信心这已经足够了,因为我相信这就是错误的来源。

4

2 回答 2

1

解析当前 json 字符串以iconforecastdayJSONArray 获取:

// 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);            
}
于 2013-03-09T23:09:43.697 回答
1

您错误地将预测识别为 JSONArray。

JSON

所以你不应该使用JSONArray forecasts = json.getJSONArray("forecast");来解析预测,你应该使用JSONObject forecastObj = json.getJSONObject("forecast"). 但是,forecastday 是一个 json 数组,因此您可以使用forecastObj.getJSONArray("forecastday"),然后对其进行处理。

于 2013-03-09T23:18:01.403 回答