0
{
   "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、AppTimeand行。

4

2 回答 2

0

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

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

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

并且属性名称是appList. 尝试放入appListjson,或更改为public List<AppList> App;在类中。这应该解决空值。

于 2012-11-05T14:57:45.210 回答
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");
     }
 }
于 2012-11-05T14:44:03.327 回答