Serialization 版本2.8.6中忽略了Jackson@JsonPropertyOrder

Serialization 版本2.8.6中忽略了Jackson@JsonPropertyOrder,serialization,properties,jackson,Serialization,Properties,Jackson,在Jackson 2.8.6中,既不@JsonPropertyOrder(字母=true)也不 @JsonPropertyOrder(值={“状态”、“成本外”、“责任”、“建议”、“条款”}) …对Java对象的序列化方式有任何影响 @com.fasterxml.jackson.annotation.JsonPropertyOrder(alphabetic = true) class MyPremium { private String status; private BigDecim

在Jackson 2.8.6中,既不
@JsonPropertyOrder(字母=true)
也不

@JsonPropertyOrder(值={“状态”、“成本外”、“责任”、“建议”、“条款”})

…对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
}
@com.fasterxml.jackson.annotation.JsonPropertyOrder(字母=true)
类别MyPremium{
私有字符串状态;
私有BigDecimal extraCost=BigDecimal.ZERO;
私人保险费负债=新保险费();
私人字符串建议;
私人名单条款;
//省略了getter和setter
}
每次重新启动应用程序时,序列化输出中属性的顺序都会发生变化

知道有什么问题吗?文件相当模糊。这表明它不适用于JSON,但我再次看到许多注释成功地对JSON属性进行了排序

此注释可能对反序列化有影响,也可能没有影响:对于 基本的JSON处理没有效果,但对其他受支持的数据没有影响 可能存在类型(或结构约定)

注意:从2.4开始,大多数情况下允许对属性进行注释 支持地图条目的字母顺序


文档中提到的反序列化在这里并不重要——您正在序列化属性。而且注释肯定适用于Jackson 2.x

然而,您并没有包括用于序列化的代码,所以显示它(或者解释框架在使用它,如果不是直接使用的话)可能会有所帮助

除此之外,是的,在编写JSON(或其他支持的格式)时,使用如图所示的注释应该改变顺序。一种可能是您使用的实际
ObjectMapper
来自Jackson 1.x(它有不同的注释)。
或者,如果您不控制序列化,可能框架甚至没有使用Jackson(某些web框架默认为其他json库)。

文档中提到的反序列化在这里是无关的——您正在序列化属性。而且注释肯定适用于Jackson 2.x

然而,您并没有包括用于序列化的代码,所以显示它(或者解释框架在使用它,如果不是直接使用的话)可能会有所帮助

除此之外,是的,在编写JSON(或其他支持的格式)时,使用如图所示的注释应该改变顺序。一种可能是您使用的实际
ObjectMapper
来自Jackson 1.x(它有不同的注释)。 或者,如果您不控制序列化,可能框架甚至没有使用Jackson(某些web框架默认为其他json库)