Создание JSON путем объединения полей из двух классов - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть два класса: класс 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, который создает JSON, как только я вернусьобъект из @RestController.Как я могу достичь вышеупомянутого json, используя эти два класса.

Примечание: 1.) Я уже знаю, что с помощью класса A расширяется B, я могу добиться этого, но я ищу какой-то пружинный методчтобы достичь этого

2.) Использование @Embeddable в классе B и последующее создание ссылки в классе A создает дополнительный тег B в JSON, как показано:

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

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Как насчет использования Джексона @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() ...
}
0 голосов
/ 21 февраля 2019

Создать делегирующий класс 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(); }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...