Сериализация из POJO массива JSON - PullRequest
0 голосов
/ 26 мая 2020

Я сгенерировал указанную ниже полезную нагрузку, используя сериализацию

{
  "transactionIds" : 123456,
  "test" : 3000,
  "amount" : {
    "currency" : "USD",
    "value" : 10
  }
}

Ниже приведен код

    Amount a1 = new Amount();
    a1.setCurrency("USD");
    a1.setValue(10);

    Child a2 = new Child();
    a2.setTransactionIds(123456);
    a2.setTest(3000);
    a2.setAmount(a1);

    ObjectMapper mapper = new ObjectMapper();

    String abc = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(a2);

Как мне добавить генерировать полезную нагрузку, такую ​​как ниже, как должны мои геттеры / сеттеры должны быть

{
  "transactions": [
    {
      "transactionIds": 123456,
      "test": 3000,
      "amount": {
        "currency": "USD",
        "value": 10
      }
    }
  ]
}

Я пробовал следующее

private List<Child> transactions;

public List<Child> getTransactions() {
    return transactions;
}

public void setTransactions(List<Child> transactions) {
    this.transactions = transactions;
}

Но, похоже, он не работает

    Parent a3 = new Parent();
    a3.setTransactions(a2);

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Добавить новый класс:

public class TransactionWrapper{
  private List<Child > transactions = new ArrayList<>();

  //getter setter

}

 Amount a1 = new Amount();
    a1.setCurrency("USD");
    a1.setValue(10);

    Child a2 = new Child();
    a2.setTransactionIds(123456);
    a2.setTest(3000);
    a2.setAmount(a1);

    TransactionWrapper tw = new TransactionWrapper();
    tw.getTransactions().add(a2);

    ObjectMapper mapper = new ObjectMapper();

    String abc = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(tw);
1 голос
/ 26 мая 2020

Вы не можете писать a3.setTransactions(a2);, поскольку setTransactions принимает список Child s, а не один Child.

Вы должны написать что-то вроде этого

if (a3.getTransactions() == null) {
    a3.setTransactions(new ArrayList<Child>());
}
a3.getTransactions().add(a2);
...