2013-05-04 72 views
0

我在設置獲取元素並設置爲自定義值類型時遇到問題。 這裏是我的自定義類型的類用戶HashMap獲取元素並設置爲自定義值類型

public class User { 

private List<Integer> FriendList=new ArrayList<Integer>(); //Uid list 
private HashMap<String,String> CheckinMap =new HashMap<String, String>(); // location and time 
private int Uid; 

public User(int uid){ 
    this.Uid=uid; 
} 
public int getId(){ 
    return Uid; 
} 
public void setCheckins(HashMap<String,String> InMap){ 
    this.CheckinMap=(HashMap<String, String>) InMap; 
} 
public void setAFriend(int uid){ 
    this.FriendList.add(uid); 
} 
} 

然後,我分析JSON陣列來獲得數據,我相信解析JSON是在這裏很好。

HashMap<Integer,User> UserMap =new HashMap(); 
HashMap<String,String> InMap =new HashMap(); 
    for(i=0;i<users.size();i++){ 
       JSONObject auser=(JSONObject)users.get(i); 
       temp_uid=Integer.parseInt(auser.get("uid").toString()); 
       UserMap.put(temp_uid, new User(temp_uid)); 
       JSONArray checkins=(JSONArray)auser.get("check-ins"); 
       for(j=0;j<checkins.size();j++){ 
        InMap.put(((ArrayList) checkins.get(j)).get(0).toString(), ((ArrayList) checkins.get(j)).get(1).toString()); 

       } 
       UserMap.get(i).setCheckin(InMap); 
       checkin_cnt=checkin_cnt+checkins.size(); 
    } 

我的Eclipse告訴我,一個例外是java.lang.NullPointerException在該行。 UserMap.get(i).setCheckin(InMap);

我可以只初始化Uid,但稍後設置FriendList和CheckinMap?這聽起來有線。 請給我一些提示或建議。謝謝

+0

你似乎非常混淆的Java命名與C#的人約定。這會讓你的代碼更難閱讀。 – Powerslave 2013-05-04 20:01:14

+0

你說得對。我最近寫了更多的C#。 – wamos 2013-05-05 03:33:11

+0

順便說一句,這個問題肯定是'UserMap'或get(i)''爲'null'的返回值。很可能後者,但坦率地說,我幾乎不知道這個代碼應該做什麼;它沒有說明域名。如果你不小心使用'i'而不是'temp_uid',下面的答案可能是正確的。反正......你爲什麼不用像** [Jackson](http://jackson.codehaus.org/)這樣的庫來處理代碼中的JSON? – Powerslave 2013-05-05 04:17:48

回答

1

從這段代碼我應該假設auser的UID始終與索引相同。

如果我的假設是錯誤的,這是有原因的,你應該問UserMap.get(temp_uid)UserMap.get(i)

+0

哇,這裏變成了一個愚蠢的問題。非常感謝。 – wamos 2013-05-04 19:56:59

相關問題