Jackson 将子类序列化为父类中的字段

Rad*_*scu 3 serialization json jackson

我试图获得以下效果。

class Foo{
    public Bar bar;
    public int f1 = 1;
}

public class Bar{
    public int b1;
    public int b2;
}
Run Code Online (Sandbox Code Playgroud)

如果你将其序列化为 JSON,你将得到

{ "bar" : {
              "b1" : 1,
              "b2" : 2,
          },
   "f1" : 0
}
Run Code Online (Sandbox Code Playgroud)

但我正在寻找杰克逊注释,将其写为

{  
   "b1" : 1,
   "b2" : 2,        
   "f1" : 0
}
Run Code Online (Sandbox Code Playgroud)

基本上,您不会将字段序列化为单独的类,而是将字段拉到树中其父对象。

我知道这可以使用自定义序列化器来完成,但我很好奇是否有一个简单的注释样式。(对于单个字段,我可以用 进行注释@JsonValue

var*_*ren 5

您可以使用@JsonUnwrapped

class Foo{
    @JsonUnwrapped
    public Bar bar;
    public int f1 = 1;
}
Run Code Online (Sandbox Code Playgroud)

如果您无法编辑您的类,请使用Mixin或自定义序列化程序。

@JsonCreator如果需要反序列化则使用