我想用以下方式建立一个json:
{"total":1,"rows":[{"id":1,"name":"Chai","price":18.00}],"footer":[{"name":"Total","price":18.00}]}
此示例来自:http://www.jeasyui.com/tutorial/datagrid/datagrid17.php
我必须拥有一个带有一些值的“total”属性和一个带有一个引用它的集合的“rows”属性,就像上面的例子一样。
考虑到对于“rows”属性,实际上我在Properties
集合中有一组java List<Properties>
类对象,其值为“id”,“name”和“price”。
注意:我正在使用GSon(https://sites.google.com/site/gson/gson-user-guide)对一组属性进行字符串化,但是我没有实现为该UI正确生成有效的json。
代码:
Collection<Atividade> listProducts = storeService.getListPaged(category, rows, page);
long qty = storeService.getTotal(category);
List<Properties> lp = new LinkedList<Properties>();
for (Item i : listProducts) {
Properties prop = new Properties();
prop.setProperty("id", Long.toString(i.getId()));
prop.setProperty("name", i.getName());
prop.setProperty("price", i.getPrice);
lp.add(prop);
}
Object[][] array = {
{"total",qty},
{"rows", lp}
};
Gson gson = new GsonBuilder().setDateFormat("dd-MM-yyyy")
.setPrettyPrinting().create();
gList = gson.toJson(array);
此代码产生以下结果,而不是上面的结果:
[
[
"total",
1
],
[
"rows",
[
{
"id": "1",
"name": "Chai",
"price": "18.00",
},
]
]
]
谢谢!
答案 0 :(得分:0)
您要生成的JSON
{"total":1,"rows":[{"id":1,"name":"Chai","price":18.00}],"footer":[{"name":"Total","price":18.00}]}
是一个JSON对象。因此,您无法使用数组
Object[][] array = {
{"total",qty},
{"rows", lp}
};
生成它。
而是创建一个POJO类,其中包含您想要的每个JSON名称/值对的字段。一个用于total
(一个数字),一个用于rows
(一个数组/属性列表),另一个用于footer
,这是一些其他对象。)
然后,您可以创建一个对象,初始化其字段,并使用Gson(或其他JSON序列化程序)对其进行序列化。