14

我们正在使用 Spring rest 模板和 jackson json 提供程序来序列化/反序列化 json。从我的服务中,我发回了一个linkedHashSet,当我收到它时,它会在客户端转换为一个HashSet。因此,我失去了元素的插入顺序。这是 Set 的杰克逊 json 提供程序的默认实现吗?有没有其他方法,所以它可以反序列化到正确的实现?我觉得这会很棘手,但你们的投入将受到高度赞赏。

谢谢

4

2 回答 2

42

您可以指定 Jackson 与@JsonDeserialize注释一起使用的具体类。只是说:

@JsonDeserialize(as=LinkedHashSet.class)

在属性的设置器上。

于 2013-08-14T20:11:03.037 回答
1

这完全取决于您要求的结果类型是什么:如果要求将数据映射到 a LinkedHashSet,那么 JSON Array 就会映射到它。如果您使用java.lang.Object(或java.util.Collection) 之类的模糊类型,您将获得ArrayListJSON 数组。请记住,JSON 是数据,而不是对象(默认情况下),因此默认情况下不会传递有关您使用的 Java 类型的元数据。如果你需要的话,有很多方法可以做到这一点,但通常你只需要提供预期的类型。

于 2013-08-14T19:40:37.943 回答