在Jackson中展平嵌套属性

usr*_*ΛΩΝ 6 java json

我需要定义一个平面POJO,将其(平面)属性映射到其JSON规范中的嵌套对象。用代码更好地解释

{
    "offset": 0,
    "pageSize": 10,
    "filter": {
        "key1":"value1",
        "key2": true,
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

我的POJO如下所示:

public class Pojo {
    private int offset;
    private int pageSize;

    private String key1;
    private boolean key2;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我曾尝试注释那些key具有属性@JsonProperty,其value属性

@JsonProperty("filter.key1")
private String key1;
Run Code Online (Sandbox Code Playgroud)

但是,当我进入MVC控制器时,尽管这些属性是在JSON中设置的,但它们在解码的POJO中为空。

我怎样才能解决这个问题?我做错什么了?

我绝对不想创建嵌套的子类

usr*_*ΛΩΝ 12

目前可能是不可能的。

这是因为杰克逊目前支持@JacksonUnwrapped相反的情况,但没有@JacksonWrapped

功能请求: https: //github.com/FasterXML/jackson-annotations/issues/42

  • 在 Jackon 2.9 中,此注释的名称为“@JsonUnwrapped”。请参阅:http://fasterxml.github.io/jackson-annotations/javadoc/2.9/com/fasterxml/jackson/annotation/JsonUnwrapped.html (16认同)