1.拼接复杂嵌套json
FastJson工具包中有两主要的类: JSONObject和JSONArray ,前者表示json对象,后者表示json数组。他们两者都能添加Object类型的对象,但是JSONArray没有put()方法,只有add()方法。这与json数组的定义有关,json数组只能添加元素,而不能添加键值对。而JSONObject因为是一个对象,不能容纳其他对象,不能添加对象,没有add() 方法,它就只有put()方法来添加键值对。JSONObject和JSONArray 似乎只能两选一,要么用JSONObject的put()方法添加一个键值对,或使用JSONArray的add()方法添加一个元素。实际上是可以两者兼顾的,JSONObect的put(String key,Object value)方法中值参数value是Object类型,那么这个数据类型也就可以是JSONArray类型。这样的话,就可以在json对象中添加json数组中,从而轻松地拼接复杂的嵌套型的son数据。
如果要返回如下格式的json数据,常规的手工拼接将非常难以实现,且容易出错。
1).首先从最内层开始分析,最内层是两个json对象,{item": "目录管理","url": "/system/menu/toMain"},这个json对象有相应的实体类AdminMenu,而外层是一个json数组将这两个对象包含进去。
AdminMenu menu1 = newAdminMenu();
menu1.setUrl("/system/menu/toMain");
menu1.setName("目录管理");//通过"getItem(){ return name}",所以只设置setName即可
AdminMenu menu2= newAdminMenu();
menu2.setUrl("/system/user/toMain");
menu2.setName("用户管理");
JSONArray level2Array= newJSONArray();//将两个实体类添加一json数据中,FastJson会将实体类自动转为json对象
level2Array.add(menu1);
level2Array.add(menu2);
2).然后分析Level2(json数据)和Level1(键值对)又是一个匿名json对象的两个属性,把这两个属性添加到json对象中。