Jackson json provider linkedHashSet deserialization

2022-09-03 09:01:11

我们使用Spring rest模板和jackson json提供程序来序列化/反序列化json。从我的服务中,我发送一个链接哈希集,当我收到它时,它会在客户端转换为哈希集。因此,我松开了元素的插入顺序。这是 Jackson json 提供程序 for Set 的默认实现吗?有没有其他方法,以便它可以反序列化为正确的实现?我觉得这将是棘手的,但你们的意见会受到高度赞赏。

谢谢


答案 1

您可以指定 Jackson 要与批注一起使用的具体类。只需输入:@JsonDeserialize

@JsonDeserialize(as=LinkedHashSet.class)

在属性的设置器上。


答案 2

这完全取决于您要求的结果类型是什么:如果要求将数据映射到 ,则 JSON 数组将映射到它。如果您使用模糊类型,例如(或),您将获得JSON数组。请记住,JSON 是数据,而不是对象(默认情况下),因此默认情况下不会传递有关您使用的 Java 类型的元数据。如果需要,有一些方法可以做到这一点,但通常您只需要提供预期的类型。LinkedHashSetjava.lang.Objectjava.util.CollectionArrayList