使用GSON将嵌套的JSON解析为通用集合

时间:2014-02-06 21:11:28

标签: java android json gson generic-collections

我的json对象以一个对象开头,然后包含我想要的对象数组{ "myObjectArray":[ {....} , {....} , {....} ] },我为{....}中表示的对象创建了模型文件,如何获得这个泛型集合代码不假设我的根元素是一个数组而没有创建一个新的嵌套对象文件

这就是我现在所拥有的,

 Type listType = new TypeToken<List<T>>() {
                }.getType();
 List<T> yourClassList = new Gson().fromJson(jsonArray, listType);

但这假设我的json对象的构造方式与此[{....}, {....}, {....}]不同,而不是我上面详述的方式

因此,解析会返回JsonSyntaxException

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

如果不创建包含一个变量"myObjectArray"且包含myObject列表的无意义模型对象,我将如何修改GSON构建器以适应?

(我正在使用android所以我不能使用很多Oracle JVM反射方法,包括ParameterizedTypeImpl

1 个答案:

答案 0 :(得分:1)

使用

GsonBuilder builder = new GsonBuilder(); 
mGson = builder.enableComplexMapKeySerialization().create();
listType = new TypeToken<Map<String, List<T>>>() {}.getType();
parsedGSON = mGson.fromJson(reader, listType); 

是答案

GSON创建一个LinkedTreeMap对象