是否可以将JSON序列化/反序列化为Java DTO,并将额外的字段放入映射中?

Dav*_*ker 9 java json jackson genson

我有这样的DTO:

public Foo {
    public int bar = 123;
    public Map<String, Object> params; // key1=v1, key2=v2 etc.
}
Run Code Online (Sandbox Code Playgroud)

我希望它能够序列化到以下JSON:

{
    "bar": 123,
    "key1": "v1",
    "key2": "v2"
} 
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何使用杰克逊或简森这样做?基本上我想要在DTO中声明的字段进行自动类型转换,但是任何"额外"都要进入参数映射.

Dav*_*ker 5

感谢@fge使我步入正轨。杰克逊具有@JsonAnySetter和@JsonAnyGetter批注,可用于执行以下操作:

public Foo {
    public int bar;
    private transient Map<String, Object> params = new HashMap<String, Object>();

    @JsonAnySetter
    public void set(String k, Object v) { params.put(k, v); }

    @JsonAnyGetter
    public Map getParams() { return params; }
}
Run Code Online (Sandbox Code Playgroud)