簡體   English   中英

如何使用GSON命名JSON對象數組?

[英]How to name an array of JSON objects using GSON?

我正在使用gson庫和Mustach.js模板引擎。 我正在將產品集合傳遞到jsp頁面。

現在我正在使用以下代碼:

Collection<Product> products = productDAO.findAll();
    Gson gson = new Gson();
    JsonElement element = gson.toJsonTree(products,
            new TypeToken<Collection<Product>>() {
            }.getType());
    JsonArray jsonArray = element.getAsJsonArray();
    HttpServletResponse response = ServletActionContext.getResponse();
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    PrintWriter writer = response.getWriter();
    writer.print(jsonArray);

它生成以下json輸出:

[{"name":"Ut Nisi A PC","price":1133.43,"storeId":1,"id":2},
{"name":"Ipsum Dolor Sit Company","price":967.45,"storeId":1,"id":3},
{"name":"Ligula Limited","price":156.66,"storeId":1,"id":100}]

我想要的是命名數組:

 {
    "products": 
    [{"name":"Ut Nisi A PC","price":1133.43,"storeId":1,"id":2},
    {"name":"Ipsum Dolor Sit Company","price":967.45,"storeId":1,"id":3},
    {"name":"Ligula Limited","price":156.66,"storeId":1,"id":100}]}

因此,在用於Mustache.js模板的jsp中,我可以像這樣引用數組:

   <div id="container"></div> 

    <script id="products-template" type="text/mustache-template">
        {{#products}}
            <li>{{name}},{{price}}</li>
        {{/products}}
    </script>
    $.ajax({
            type : 'GET',
            dataType : 'json',
            url : 'product/upload_products',
            success : function(products) {
                var template = $('#products-template').html();
                var info = Mustache.render(template, products);
                $('#container').html(info);
            }
        })
    </script>

如何使用GSON庫實現這樣的輸出?

只需創建一個新的JsonObject並添加一個字段

JsonObject object = new JsonObject();
object.add("products", jsonArray);

然后將該對象寫入響應。

使用JsonObject。 所以,

JsonObject jsonObject = new JsonObject();
jsonObject.add("products", jsonArray); // jsonObject has the add method not put.

Json對象的鍵始終是字符串,但是值可以是字符串,布爾值,數字,json數組等。

如果您有一個數組對象,則只需將其傳遞給值中的jsonObject並創建一個String鍵。

像HashMap一樣管理jsonObject。 要執行所需的操作,請在新的Json對象中放置put(“ products”,yourJsonArrayObject)。

JsonObject yourNewObject = new JsonObject();
yourNewObject.put("products", yourJsonArrayObject);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM