2014-02-06 55 views
0

我的json對象以一個對象開始,然後包含我想要的對象的一個​​數組{ "myObjectArray":[ {....} , {....} , {....} ] },我爲{....}中的對象表示了該模型文件,我如何獲得這個泛型集合代碼不承擔我的根元素是不進行新的嵌套對象文件解析嵌套的JSON作爲GSON的泛型集合

這是我現在有一個數組,

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建設者,以適應?

回答

1

使用

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

(我採用了android,所以我不能使用了大量的甲骨文JVM反射的方法,包括ParameterizedTypeImpl)就是答案

GSON創建LinkedTreeMap對象