Java 如何从JSON对象通道检索或获取Yahoo Weather API->;项目->;预测->;{day1}{day2}{day3}{day4}{day5}

Java 如何从JSON对象通道检索或获取Yahoo Weather API->;项目->;预测->;{day1}{day2}{day3}{day4}{day5},java,android,json,yahoo-api,Java,Android,Json,Yahoo Api,我试图访问预测数据,但失败了,NullPointerException,有时甚至崩溃。因为我无法从项->forecast->{data}中访问或检索数据 项目类别: condition = new Condition(); condition.jsonPopulate("condition"); 在条件等级: void jsonPopulate(data){ temp = data.optString("temp"); } 我成功地获得了条件类

我试图访问预测数据,但失败了,
NullPointerException
,有时甚至崩溃。因为我无法从项
->forecast->{data}
中访问或检索数据

项目类别:

    condition = new Condition();
    condition.jsonPopulate("condition");
在条件等级:

    void jsonPopulate(data){
        temp = data.optString("temp");
    }
我成功地获得了条件类的数据

但是为什么我不能做同样的预测,因为预测和条件是兄弟姐妹

由于forecast具有数组对象,因此我尝试如下方式检索数据:

上下文项目类发送预测对象 项目类别的代码如下所示

    forecast= new Condition();
    forecast.jsonPopulate("forecast");
    private String  day;
    private String high;
    private String low;
    ArrayList<ForecastDetails>fdetails;

    public void jsonPopulate(data){
    for(i=0; i<data.length(); i++){
            day = data.optString("day");
            high = data.optString("high");
            low = data.optString("low");

            fdetails.add(day);
            fdetails.add(high);
            fdetails.add(low);
        }

    }
从预测对象检索数据时上下文预测类 预测类的代码如下所示

    forecast= new Condition();
    forecast.jsonPopulate("forecast");
    private String  day;
    private String high;
    private String low;
    ArrayList<ForecastDetails>fdetails;

    public void jsonPopulate(data){
    for(i=0; i<data.length(); i++){
            day = data.optString("day");
            high = data.optString("high");
            low = data.optString("low");

            fdetails.add(day);
            fdetails.add(high);
            fdetails.add(low);
        }

    }
私人字符串日;
私人串高;
私人字符串低;
ArrayListfdetails;
public void jsonPopulate(数据){
对于(i=0;i
JSONObject d=newjsonobject(数据);

对于(i=0;i您的意思是我应该使用getString(“day”)而不是optString(“day”);您可以使用optString也没有问题!!!区别在于,如果您指定的键不存在,optString将返回空字符串(”),而另一方面,如果该键在JSONyou中不存在,getString将抛出JSONException。您说JSONObject d=new JSONObject(数据)我喜欢这个JSONObject data=new JSONObject(s);JSONObject queryResult=data.optJSONObject(“query”);query->channel->item->forecast->{},{},{},{},{},{},{};我访问了till forecast,但没有访问它的数据,我像上面提到的那样尝试了预测,但没有得到数据。