google gson反序列化列表<class>對象?(通用類型)我想通過GoogleGSON傳輸一個List對象,但是我不知道如何反序列化泛型類型。我在看完這,這個(BalusC的答復):MyClass mc = new Gson().fromJson(result, new List<MyClass>(){}.getClass());但是,我在eclipse中得到了一個錯誤:“type newlist(){}必須實現繼承的抽象方法.”如果我使用快速修復,我會得到超過20個方法存根的怪物。我很確定有一個更容易的解決辦法,但我似乎找不到它!編輯:現在我有了Type listType = new TypeToken<List<MyClass>>()
{
}.getType();MyClass mc = new Gson().fromJson(result, listType);但是,在“From Json”行中,我確實得到了以下異常:java.lang.NullPointerExceptionat org.apache.harmony.luni.lang.reflect.ListOfTypes.length(ListOfTypes.java:47)at org.apache.harmony.luni.lang.reflect.ImplForType.toString(ImplForType.java:83)at java.lang.StringBuilder.append(StringBuilder.java:203)at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:56)at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:88)at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:76)at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:106)at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64)at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49)at com.google.gson.Gson.fromJson(Gson.java:568)at com.google.gson.Gson.fromJson(Gson.java:515)at com.google.gson.Gson.fromJson(Gson.java:484)at com.google.gson.Gson.fromJson(Gson.java:434)I 做捕捉JsonParseExceptions和“結果”不是NULL。我使用調試器檢查了listType,得到了以下結果:列表類型List=NULL解決型=類型[1]ARGS=ListOfTypesLoader=PathClassLoaderownerType 0=NULLownerTypeRes=NULLrawType=Class(java.util.ArrayList)rawTypeName=“java.util.ArrayList”因此,“getclass”調用似乎沒有正常工作。有什么建議嗎?編輯2:我檢查了GSON用戶指南..它提到了在將泛型類型解析到JSON時應該發生的運行時異常。我做了“錯誤”(上面沒有顯示),就像在例子中一樣,但是完全沒有得到這個異常。因此,我按照用戶指南中的建議更改了序列化。但沒幫上忙。編輯3:解決了,見下面的答案。
3 回答

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
MyClass[] mcArray = gson.fromJson(jsonString, MyClass[].class);
List<MyClass> mcList = Arrays.asList(mcArray);
Arrays.asList()
List<MyClass> mcList = new ArrayList<>(Arrays.asList(mcArray));
添加回答
舉報
0/150
提交
取消