【问题标题】:Gson-> Json to deserialize List of custom objectsGson-> Json 反序列化自定义对象列表
【发布时间】:2014-06-18 22:48:53
【问题描述】:

我正在尝试在 Json 对象上使用 Gson 序列化和反序列化 Java POJO 的 ArrayList 我有一个对象 MyClass 作为

public class MyClass{               
    private int type                
    private int pos;                
    private Object value;                               
}

我有一个这些对象的 ArrayList,我将其序列化为

 List<MyClass> values= null;
 String json = new Gson().toJson(retValues);

json字符串是

[{"type":4,"pos":1,"value":15}]

我尝试将其反序列化为

 Type myType = new TypeToken<ArrayList<MyClass>>() {}.getType();
 List<MyClass> test=new Gson().fromJson(json, myType);

我收到一个错误

The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@1141ddf failed to deserialized json object [{"type":4,"pos":1,"value":18}] given the type java.util.ArrayList<abc.MyClass>

非常感谢任何输入!

【问题讨论】:

  • 我认为对象类型是问题。
  • 你给它的例子对我来说很好。
  • 另外,您使用的是旧版本的 Gson,请升级到版本 2。
  • 以上代码对我反序列化为自定义对象列表很有帮助。使用 TypeToken 是我的问题的答案。谢谢。

标签: java json collections gson


【解决方案1】:

我想通了。我添加了 2 件事,我不知道是哪一个使它起作用。 - 我向 MyClass 添加了一个无参数构造函数 - 我让 MyClass 实现可序列化。

而且它有效!

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多