2 sachinks SachinKS 于 2013.08.02 11:47 提问

解析包含null的原始json数组

Json数组:

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

Gson:

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

MyClass:

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

错误stack:

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)

如果不能修改json字符串 "msgArr=[null]",怎么解除这个异常?

2个回答

wurenbi45
wurenbi45   2013.08.02 14:15
已采纳

json里得msgArr的值去掉{},直接写成null试试

hu00848
hu00848   2013.08.29 15:28

GSON代码调整为下面的试试:

new GsonBuilder()
.seralizeNulls()//处理Null
.create()
.fromJson(result, MyClass.class);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!