我可以将jackson映射的@JsonProperties推送到“顶级”吗?

时间:2014-02-12 23:01:35

标签: java json jackson

给出类似以下的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出于我的直接控制。)

1 个答案:

答案 0 :(得分:1)

你可以试试@JsonUnwrapped

根据link,这应该删除一层包装。

(Jackson 1.9+)@JsonUnwrapped(property; ie method,field)用这个注释标记的属性将被“解包”,即通常被写为子JSON对象的属性的属性被添加作为封闭JSON对象的属性。