2017-01-30 2 views
0

예측 데이터에 도달하려고했지만 실패했습니다. NullPointerException 그리고 때로는 충돌이 일어납니다. 내가 항목 -> forecast -> {data}에서 데이터에 도달하거나 검색하지 못하기 때문입니다. 조건 클래스에서JSON 객체 채널에서 Yahoo Weather API를 검색하거나 가져올 수있는 방법 -> item -> forecast -> {day1} {day2} {day3} {day4} {day5}

condition = new Condition(); 
    condition.jsonPopulate("condition"); 

:

Item 클래스에서

내가 성공적으로 조건 클래스에서 데이터를 가지고

void jsonPopulate(data){ 
     temp = data.optString("temp"); 
    } 

,

하지만 예측 이후 예측을 위해 동일한 작업을 수행하지 못할 이유 및 조건은 형제입니다. 다음과 같은 항목 클래스의 예상 코드의

상황에 맞는 항목 클래스 전송 객체 : 내가 좋아하는 시도 있도록 예측 이후

아래 데이터를 검색 배열 개체가 있습니다.

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); 
     } 

    } 

ArrayList<ForecastDetails>; 에 유지하려고했지만 실패, 누구 야후 날씨의 항목 객체로부터 예측 데이터를 검색하는 방법에 대해 저를 제안 할 수있다.

답변

0
JSONObject d = new JSONObject(data); 
    for(i=0; i<d.length(); i++) 
    { 
     day = d.getString("day"); 
      high = d.getString("high"); 
      low = d.getString("low"); 

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

optString ("day") 대신 getString ("day")을 사용해야합니다. – shaheb

+1

optString도 사용할 수 있습니다. 차이점은 optString은 지정된 키가 존재하지 않으면 빈 문자열 ("")을 반환하고 getString은 키가 JSON 객체에 없다면 JSONException을 던집니다. – AnilCk

+0

JSONObject d = new JSONObject (data) ; 내가 좋아했습니다. JSONObject data = new JSONObject (s); JSONObject queryResult = data.optJSONObject ("query"); query-> channel-> item-> forecast-> {}, {}, {}, {}, {}; 내가 예측에 액세스했지만 위의 데이터를 얻지 못하고 위와 같이 시도했지만 예상치 못한 데이터가 없습니다. – shaheb

관련 문제