杰克逊将子类序列化为父类中的字段

时间:2017-10-26 13:06:18

标签: json serialization jackson

我试图获得以下效果。

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

public class Bar{
    public int b1;
    public int b2;
}

如果您将其序列化为JSON,您将获得

{ "bar" : {
              "b1" : 1,
              "b2" : 2,
          },
   "f1" : 0
}

但是我在杰克逊的注释上把它写成

{  
   "b1" : 1,
   "b2" : 2,        
   "f1" : 0
}

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

我知道这可以通过自定义序列化程序完成,但如果有一个简单的注释样式,我很好奇。 (对于单个字段,我可以使用@JsonValue注释)

1 个答案:

答案 0 :(得分:0)

您可以使用@JsonUnwrapped

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

如果您无法修改课程,请使用Mixin或自定义序列化程序。

如果您需要deserialization

,请使用@JsonCreator