我有几个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
}
如何使响应中的字段按名称排序?
答案 0 :(得分:1)
这有点棘手,因为杰克逊将未包装对象的所有属性的序列化组合在一起。 @JsonPropertyOrder
注释无法覆盖此行为,因为它works on the unwrapped field而不是字段的属性。作为一种变通方法,您可以将对象序列化为中间Map
,自行排序,然后按如下方式将其序列化为JSON:
ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.convertValue(new a(), Map.class);
SortedMap sortedMap = new TreeMap(map);
System.out.println(objectMapper.writeValueAsString(sortedMap));