[英]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.