我们正在使用 Spring rest 模板和 jackson json 提供程序来序列化/反序列化 json。从我的服务中,我发回了一个linkedHashSet,当我收到它时,它会在客户端转换为一个HashSet。因此,我失去了元素的插入顺序。这是 Set 的杰克逊 json 提供程序的默认实现吗?有没有其他方法,所以它可以反序列化到正确的实现?我觉得这会很棘手,但你们的投入将受到高度赞赏。
谢谢
您可以指定 Jackson 与@JsonDeserialize
注释一起使用的具体类。只是说:
@JsonDeserialize(as=LinkedHashSet.class)
在属性的设置器上。
这完全取决于您要求的结果类型是什么:如果要求将数据映射到 a LinkedHashSet
,那么 JSON Array 就会映射到它。如果您使用java.lang.Object
(或java.util.Collection
) 之类的模糊类型,您将获得ArrayList
JSON 数组。请记住,JSON 是数据,而不是对象(默认情况下),因此默认情况下不会传递有关您使用的 Java 类型的元数据。如果你需要的话,有很多方法可以做到这一点,但通常你只需要提供预期的类型。