JSON杰克逊序列化反序列化列表列表

Posted

技术标签:

【中文标题】JSON杰克逊序列化反序列化列表列表【英文标题】:JSON Jackson serialize deserialize List of List 【发布时间】:2013-05-20 04:43:30 【问题描述】:

我使用 Json-Jackson 来序列化/反序列化我的对象,并且内置类一切顺利。 String、int等都很好。但现在我必须序列化/反序列化以特定方式构建的对象。遵循声明:

class A implements Serializable   
   private String id;
   private List<B> bobjs;
   ...getters & setters (but not for String id)

class B implements Serializable 
   private String id;
   private String label;
   private List<C> cobjs;
   ...getters & setters (but not for String id)

class C implements Serializable 
   private String id;
   private String label;
   private BigDecimal counts;
   ...getters & setters (but not for String id)

如果我使用标准的序列化器/反序列化,它会告诉我一条错误消息,例如“java.lang.UnsupportedOperationException...”,因此它无法序列化/反序列化 bobjs。 我怎样才能以一般的方式做到这一点,所以我不写 3 个序列化器/反序列化器,而只告诉 Json-Jackson 当遇到“List”类型的对象时,它必须像数组一样序列化/反序列化它(例如)。 谢谢大家!

附:我在 google 上找到了示例,但它们仅适用于简单对象,而不适用于由 List.. 等组成的 List。

【问题讨论】:

你的问题很不清楚。包括您的自定义序列化程序(如果有)和完整的异常堆栈跟踪。 您能添加源代码和示例对象吗?我认为,您的问题与杰克逊无关。如果您仍然需要我们方面的帮助,请改进您的问题。 完整的堆栈跟踪是:java.lang.UnsupportedOperationException(通过引用链:TheResult["customData"]->java.util.HashMap["Datas"]->Data["bobjs"]- >java.util.ArrayList[0]->B["cobjs"]->java.util.ArrayList[0]->... 【参考方案1】:

问题是由于一个非常深的对象不可序列化。真的很深很浅。谢谢大家。

【讨论】:

以上是关于JSON杰克逊序列化反序列化列表列表的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试反序列化对象列表时,杰克逊抛出错误映射异常

杰克逊将单个项目反序列化为列表

杰克逊反序列化阵列通量

Spring框架中的Jackson反序列化错误处理

杰克逊:地图的反序列化

无法使用杰克逊反序列化包含 2 个具有相同 ID 的对象的 Json