2013-08-02 54 views
2

JSON字符串如何解析原始json數組包含null與Gson?

{"userName":null," msgArr":[null],"numrow":0} //String result 

GSON

new Gson().fromJson(result, MyClass.class); 

MyClass的

public String userName; 
public int[] msgArr; 
... 

錯誤堆棧

at java.lang.IllegalArgumentException: Primitive array can't take null values. 
at java.lang.reflect.Array.set(Array.java:406) 
at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:78) 
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) 
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) 
at com.google.gson.Gson.fromJson(Gson.java:803) 
at com.google.gson.Gson.fromJson(Gson.java:768) 
at com.google.gson.Gson.fromJson(Gson.java:717) 
at com.google.gson.Gson.fromJson(Gson.java:689) 
at com.test.dao.RequestBase.onPostExecute(RequestBase.java:79) 

如何才能避免這種異常,如果我不能改變JSO n字符串「msgArr = [null]」?

+2

你嘗試過改變'MyClass' msgArr到'整數[]'? – user2507946

回答

0

user2507946在您的評論中提供正確答案。

int在Java中不是可以爲空的,但是你可以用包裝類Integer來代替空值。

public String userName; 
public Integer[] msgArr; 
... 
+0

謝謝,它的工作原理。或列表 ChangUZ

0
Gson gson = new GsonBuilder 
    .serializeNulls() 
    .create(); 
+0

我做到了。但它沒有工作 – ChangUZ

+0

是的,我很抱歉。我正在通過手機閱讀你的問題,並從那裏回覆。從計算機中查看後,我誤以爲你的原始問題。我道歉。 – dayv2005