从 JSON 数组的 POJO 序列化

Serialization from POJO of JSON Array

我使用序列化生成了以下负载

{
  "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);

我如何添加生成如下所示的有效载荷,我的 getters/setters 应该如何

{
  "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);

添加一个新的class:

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);

您不能写 a3.setTransactions(a2);,因为 setTransactions 接受 Child 的列表,而不是单个 Child

你一定要这样写

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