繁体   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