在杰克逊2.8.6中@JsonPropertyOrder(alphabetic = true)
和
@JsonPropertyOrder(value = {"status", "extraCost", "liability", "advice", "clause"})
..对我的Java对象的序列化方式有任何影响。
@com.fasterxml.jackson.annotation.JsonPropertyOrder(alphabetic = true)
class MyPremium {
private String status;
private BigDecimal extraCost = BigDecimal.ZERO;
private Premium liability = new Premium();
private String advice;
private List<String> clause;
// getters and setters omitted
}
每次重启应用程序时,序列化输出中属性的顺序都会发生变化。
知道可能是什么问题吗?文档相当模糊。它表明它不适用于JSON,但我再次看到许多examples这个注释成功地命令JSON属性。
此注释可能会或可能不会对反序列化产生影响:for 基本的JSON处理没有任何效果,但对于其他支持的数据 类型(或结构约定)可能有。
注意:允许注释属性,主要从2.4开始 支持Map条目的字母顺序。
答案 0 :(得分:0)
文档提及反序列化与此无关 - 您正在序列化属性。并且注释肯定适用于Jackson 2.x.
但是,您没有包含用于序列化的代码,因此显示它(或解释在不直接使用时使用它的框架)可能会有所帮助。
除此之外,是的,使用所示的注释应该在编写JSON(或其他支持的格式)时改变顺序。一种可能性是你使用的实际ObjectMapper
来自Jackson 1.x(具有不同的注释)。
或者,如果你不控制序列化,那么框架甚至不能使用Jackson(某些Web框架默认使用其他json库)。