2012-11-05 136 views
0
{ 
    "App":[{ 
     "AppID": 0, 
     "AppTime": "08:00 AM" 
    }], 
    "Rows": 0 
} 

这是我的JSON响应,但是当我映射到我的POJO类并访问我时,我得到一个NullPointerExceptionnullpointerexception映射pojo到json

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行。

+0

那是我还是你想要定义一个零长度的数组**在你的JSON中有**值? –

+1

您的JSON对象没有'appList'属性,而是'App'属性。 – BalusC

+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"); 
    } 
} 
0

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

你的情况的问题:在JSON的关键是 “应用程序”:

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

而且属性名称是appList。尝试将appList放入json中,或在该类中更改为public List<AppList> App;。 这应该解决null。