2012-11-05 137 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。