将pojo映射到json的nullpointerexception

时间:2012-11-05 14:38:13

标签: java android gson

{
   "App":[{
        "AppID": 0,
        "AppTime": "08:00 AM"
    }],
   "Rows": 0
}

这是我的JSON响应,但是当我映射到我的POJO类并访问时,我得到NullPointerException

ListResponse value = new Gson().fromJson(result, ListResponse.class);

import java.util.List;
public class ListResponse{

    public List<AppList> appList;

    public List<AppList> getAppList() {
        return appList;
    }
}

当我尝试在我的活动类中访问我的结果时,就像这样我得到一个错误。

public void accessData(ListResponse result){
    System.out.println(result.getAppList()); // I am getting null here.
}

更新

我的AppList类包含 AppID,AppTime and行。

2 个答案:

答案 0 :(得分:0)

我认为您将回复存储在value

 ListResponse value = new Gson().fromJson(result, ListResponse.class);

因此请尝试拨打value.getAppList()

 public void accessData(ListResponse result){
    System.out.println(value.getAppList()); // shouldn't get NullPointer
 }

如果值可能为null,则进行空检查也是个好主意:

 public void accessData(ListResponse result){
    if(value != null){
        System.out.println(value.getAppList()); // shouldn't get NullPointer
     }else{
        System.out.println("value is null");
     }
 }

答案 1 :(得分:0)

当您使用GSon将String转换为Object(在您的情况下是ListResponse对象)时,此类中的属性名称需要与键中的属性完全相同json字符串。

你的问题:json中的键是“App”:

"App":[{
    "AppID": 0,
    "AppTime": "08:00 AM"
}],

属性名称为appList。尝试将appList放在json中,或者更改为班级中的public List<AppList> App;。 这应解决null。