Gson名称数组并包含一个新属性

时间:2014-10-28 02:02:04

标签: java javascript json gson

我开始和json合作,需要一些帮助来解决这个问题。

我有一个pojo

 public class HiReceiptsObj{
       private string warehouse_id;
       private String owner_id;
private String receipt;

.....// all with Getters and setters

}

我调用一个java方法,我加载一个像这样的收据的ArrayList

List<HiReceiptsObj> receipts = new ArrayList<HiReceiptsObj>();

然后我使用gson将ArrayList转换为json

String receiptsJson = new Gson().toJson(receipts);
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(receiptsJson);

这将输出

    [{"warehouse_id":"US01","owner_id":"NP   ","receipt":"INV"},
{"warehouse_id":"US01","owner_id":"NP   ","receipt":"082212-3047 "},
{"warehouse_id":"US01","owner_id":"NP   ","receipt":"INVADJUST"}]

我需要这种输出

{
  "total_pages": 10,
  "rows": [
   {"warehouse_id":"US01","owner_id":"NP   ","receipt":"INV"},
   {"warehouse_id":"US01","owner_id":"NP   ","receipt":"082212-3047 "}, 
    {"warehouse_id":"US01","owner_id":"NP   ","receipt":"INVADJUST"}
    ]

}

我已经阅读过有关此事的其他帖子,但它们对我来说太先进了,有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

1)您还应该有一个持有人课程:

public class ReceiptHolder {
    @SerializedName("total_pages")
    private int totalPages;

    private List<HiReceiptsObj> rows;

    // TODO: add getter / setters
}

2)创建receiptHolder实例并填写它:

List<HiReceiptsObj> receipts = new ArrayList<HiReceiptsObj>();
ReceiptHolder receiptHolder = new ReceiptHolder();
receiptHolder.setRows(receipts);
receiptHolder.setTotalPages(receipts.size());

3)序列化receiptHolder

String receiptsJson = new Gson().toJson(receiptHolder );

根据需要输出:

{
  "total_pages": 10,
  "rows": [
    {
      "warehouse_id": "US01",
      "owner_id": "NP   ",
      "receipt": "INV"
    },
    {
      "warehouse_id": "US01",
      "owner_id": "NP   ",
      "receipt": "082212-3047 "
    },
    {
      "warehouse_id": "US01",
      "owner_id": "NP   ",
      "receipt": "INVADJUST"
    }
  ]
}