给出类似以下的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"
}
}
我想要的是&#34; flatten&#34; map
属性以某种方式使其内容出现在&#34;顶级&#34;像这样的JSON结构:
{
"value": "abc",
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
通过Jackson注释的任何组合,这可能是声明性地吗?
(这是我实际问题的简化,所以我不是在寻找像#34;编写自己的自定义MyClass序列化器的答案。&#34;实际上,这个类必须在场景中使用自定义ObjectMappers出于我的直接控制。)
答案 0 :(得分:1)
你可以试试@JsonUnwrapped
根据link,这应该删除一层包装。
(Jackson 1.9+)@JsonUnwrapped(property; ie method,field)用这个注释标记的属性将被“解包”,即通常被写为子JSON对象的属性的属性被添加作为封闭JSON对象的属性。