【发布时间】:2013-08-05 09:43:19
【问题描述】:
我想反序列化一个复杂对象的数组
例如我有对象MyTestObject
public class MyTestObject{
String param1;
String param2;
int param3;
}
现在我有一个名为MyTestObject的对象数组
我的 json 看起来像这样
{
[
"param1":"something1",
"param2:"something2",
"param3":3
],
[
"param1":"something1",
"param2:"something2",
"param3":3
],
[
"param1":"something1",
"param2:"something2",
"param3":3
]
}
这是我的去串化代码
public static <T> List<T> fromJSON(String json, Class<T> className) {
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Type myType = new TypeToken<List<T>>() {
}.getType();
Gson g1 = builder.create();
List<T> objects = (List<T>) g1.fromJson(json, (Type) myType);
for (T object : objects) {
Log.d(TAG, "object: " + object + " class " + object.getClass());
}
return objects;
}
ArrayList<MyTestObject> objects = fromJSON(myjson,MyTestObject.class);
数组本身被正确反序列化,但是其中的对象不是正确的类,它们的类型是com.google.gson.internal.LinkedTreeMap
当我需要它们为MyTestObject 类型时
我该如何解决这个问题?
【问题讨论】:
-
这不是有效的 JSON!你不能有这个
{[...], [...], [...]},但你需要这个{'foo':[...], 'bar':[...], 'baz':[...]}...我的意思是,根对象中的数组必须有一个名字...