如何使用 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}]}
那么在 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 库实现这样的输出?
只需新建一个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 数组、....
如果您有一个数组对象,您只需将其传递给值中的 json对象并创建一个字符串键。
像 HashMap 一样管理 json对象。
要做你需要做的事情,在一个新的 Json 对象中做一个 put("products", yourJsonArrayObject)。
JsonObject yourNewObject = new JsonObject();
yourNewObject.put("products", yourJsonArrayObject);
我正在使用 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 库实现这样的输出?
只需新建一个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 数组、....
如果您有一个数组对象,您只需将其传递给值中的 json对象并创建一个字符串键。
像 HashMap 一样管理 json对象。 要做你需要做的事情,在一个新的 Json 对象中做一个 put("products", yourJsonArrayObject)。
JsonObject yourNewObject = new JsonObject();
yourNewObject.put("products", yourJsonArrayObject);