给定如下的 Java 类:
class MyClass {
String value;
Map<String,Object> map;
@JsonProperty("value")
public String getValue() {
return value;
}
@JsonProperty("map")
public Map<String,Object> getMap {
return map;
}
}
Jackson 将像这样转换为 JSON:
{
"value": "abc",
"map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
我想要的是以某种方式“扁平化”map
属性,使其内容出现在 JSON 结构的“顶层”,如下所示:
{
"value": "abc",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
是否可以通过 Jackson 注释的任意组合以声明方式实现?
(这是对我的实际问题的简化,所以我不是在寻找“编写您自己的自定义 MyClass 序列化程序”之类的答案。实际上,此类必须在我无法直接控制的场景中使用自定义 ObjectMappers。 )
最佳答案
你可以试试@JsonUnwrapped
根据 link ,这应该去除一层包装。
(Jackson 1.9+) @JsonUnwrapped (property; i.e. method, field) 标有此注解的属性将被“解包”,即通常被写为子 JSON 对象属性的属性将被添加作为封闭 JSON 对象的属性。
关于java - 我可以将 jackson-mapped @JsonProperties 推送到 "top level"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21741777/