通过组合两个类的字段来创建JSON

时间:2019-02-21 03:45:26

标签: java json spring spring-boot jackson

我有两个班级:A类,B类

class A{
 private int F1;
 private String F2;
}

class B{
 private int F3;
 private String F4;
 private String F5;
}

我想要这样的JSON:

{
   "F1": 123
   "F2": "ABC"
   "F3": 456
   "F4": "CDE"
   "F5": "FGH"
}

我正在使用springboot,一旦我从@RestController返回对象,它就会创建JSON。如何使用这两个类实现上述json。

  

注意:   1.)我已经知道,通过使用A类扩展B,我可以实现       这,但我正在寻找一些基于弹簧的方法来实现这一目标

     

2。)在类B中使用@Embeddable然后在类A中创建引用将创建       JSON中的附加标签B,如下所示:

{
   "F1": 123
   "F2": "ABC"
    b: {
          "F3": 456
          "F4": "CDE"
          "F5": "FGH"
    }
}

2 个答案:

答案 0 :(得分:5)

使用jackson @JsonUnwrapped怎么样?

http://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonUnwrapped.html

public class A{

    @JsonUnwrapped
    private B b;

    public User getB() ...
}

答案 1 :(得分:1)

创建一个委托类AB

public final class AB {
    private final A a;
    private final B b;
    public AB(A a, B b) {
        this.a = a;
        this.b = b;
    }
    // Delegation methods to A
    public int    getF1() { return this.a.getF1(); }
    public String getF2() { return this.a.getF2(); }
    // Delegation methods to B
    public int    getF3() { return this.b.getF3(); }
    public String getF4() { return this.b.getF4(); }
    public String getF5() { return this.b.getF5(); }
}