Java jackson仅使用字段名对响应进行排序
我有几个pojo课程。 使用JacksonJava jackson仅使用字段名对响应进行排序,java,json,xml,spring,jackson,Java,Json,Xml,Spring,Jackson,我有几个pojo课程。 使用Jackson@JsonUnwrapped注释来省略类名,但是属性没有按照我期望的方式排序 例如: class a { @JsonUnwrapped B b; int c; //getters and setters } class B { int a; int d; // getters and setters } 我的实际反应是: { c:1 a:2 d:2 } { a:2 c:1 d:2 } 但我预
@JsonUnwrapped
注释来省略类名,但是属性没有按照我期望的方式排序
例如:
class a {
@JsonUnwrapped
B b;
int c;
//getters and setters
}
class B {
int a;
int d;
// getters and setters
}
我的实际反应是:
{
c:1
a:2
d:2
}
{
a:2
c:1
d:2
}
但我预期的反应是:
{
c:1
a:2
d:2
}
{
a:2
c:1
d:2
}
如何使响应中的字段按名称排序?这有点棘手,因为Jackson将展开对象的所有属性的序列化组合在一起。
@JsonPropertyOrder
注释无法重写此行为,因为它不是字段的属性,而是属性。作为一种解决方法,您可以将对象序列化为中间的映射
,自己对其进行排序,然后将其序列化为JSON,如下所示:
ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.convertValue(new a(), Map.class);
SortedMap sortedMap = new TreeMap(map);
System.out.println(objectMapper.writeValueAsString(sortedMap));
我正在使用SpringJava项目,请告诉我如何使用Jackson2ObjectMapperBuilder配置它,我不知道有什么干净的方法可以做到这一点。