使用Jackson使用自定义比较器来破坏Guava类

时间:2014-10-11 08:09:42

标签: java json jackson guava fasterxml

我在我的一个类中使用Guava TreeMultiset,需要将一个字段序列化/反序列化为一个已排序的多集。我正在使用自定义比较器来构造TreeMultiset:

private SortedMultiset<UserFavCatsNode> ms = TreeMultiset.create(new customComparator());

序列化似乎工作正常,但反序列化失败,因为Jackson无法访问自定义比较器来构造TreeMuliset实例。 在反序列化时如何传递比较器实例?

我最初搜索并找到两个选项:

  1. 实施Comparable接口。这样做有效,但在课堂上强加自定义排序并不令人满意。
  2. 我试图通过编写基于帖子(http://jackson-users.ning.com/forum/topics/de-serialize-treeset-by-first-defining-a-comparator)的包装类来解决这个问题,并使用@JsonDeserialize注释调用它
  3. public Constructor(@JsonDeserialize(as = CustomTreeMultiset.class) field) { // }

    此策略失败,因为 Guava TreeMultiset是最终的,我无法实现扩展它的CustomTreeMultiset以提供包装器反序列化类。有没有更好的解决方案,而不是在课堂上注入自定义排序逻辑?

0 个答案:

没有答案