解析数据时出错org.json.JSONException - Java

时间:2013-03-09 22:48:04

标签: java android json

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

道歉,如果我错过了什么,但我相信这已足够,因为我相信这是错误的来源。

2 个答案:

答案 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。

JSON

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