2013-05-04 59 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

相关问题