【问题标题】:Gson name array and include a new propertyGson 名称数组并包含一个新属性
【发布时间】:2014-10-28 02:02:03
【问题描述】:

我开始使用 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"}
    ]

}

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

谢谢

【问题讨论】:

    标签: java javascript json gson


    【解决方案1】:

    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"
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2019-06-20
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多