Как назвать массив объектов JSON, используя GSON?

1

Я использую библиотеку 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}]}

Итак, в jsp для шаблона Mustache.js я могу ссылаться на массив как:

   <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?

Теги:
gson
mustache

3 ответа

1
Лучший ответ

Просто создайте новый JsonObject и добавьте поле

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

затем напишите этот объект на ответ.

1

Ключ Json Object всегда является строкой, но значение может быть строкой, логическим, числом, json-массивом,....

Если у вас есть объект, который является массивом, вам нужно передать его в jsonObject в значение и создать строковый ключ.

Управляйте jsonObject как HashMap. Чтобы сделать то, что вам нужно, сделайте put ("products", yourJsonArrayObject) в новом объекте Json.

JsonObject yourNewObject = new JsonObject();
yourNewObject.put("products", yourJsonArrayObject);
  • 0
    Какой JsonObject вы используете здесь? У JsonObject у JsonObject нет метода put .
  • 0
    Я использую Джексона или Джеттинсона.
Показать ещё 1 комментарий
0

Используйте JsonObject. Так,

JsonObject jsonObject = new JsonObject();
jsonObject.add("products", jsonArray); // jsonObject has the add method not put.
  • 0
    этот код выглядит плохо, хотя может и сработать, но, как видно из приведенных выше ответов, вы можете исключить создание избыточной карты и сократить ее до двух строк кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню