java - 我可以将 jackson-mapped @JsonProperties 推送到 "top level"吗?

标签 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"
    }

}

我想要的是以某种方式“扁平化”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/

相关文章:

java - 如何在 Clojure 中实现全包随机数函数?

javascript - 使用 JS 库生成图表

java - 如何重命名子类的 JSON 属性

java - Jackson ObjectMapper 中的泛型静态方法

java - 在 Java 中使用 JNA 关闭监视器无法按预期工作

java - 在 Java 中递归列表的正确方法是什么?

javascript - 即使对象已正确实例化,JSONObject 也无法从现有对象中读取属性

java - @JsonInclude(Include.NON_NULL) 如何在 Spring Boot 中工作

java - 纯粹用 Java 为 Java Sampler 创建新的 JMeter 测试

json - Instagram 的最大请求数是多少?