{"河北省":["廊坊市","保定市","石家庄"],"山东省":["济南","青岛","烟台"],"河南省":["郑州市","洛阳市","开封"]}
怎么生成这样的json
可以直接后台用字符串拼装。StringBuffer
已经知道格式和固定的内容,直接用String str = 你的json字符串就好了。明显你给出的不是json格式字符串
如果非要用json生成,真心有点麻烦。
JSONObjet hebei = new JSONObject();
hebei.put("河北省","["廊坊市","保定市","石家庄"]");
JSONObjet sd = new JSONObject();
hebei.put("山东省","["济南","青岛","烟台"]");
JSONArray ja = new JSONArray();
ja.add(hebei);
ja.add(sd);
初步猜想,你是为了2级菜单吧,或者说是为了省市级联,那么一个省是不是就是一个对象?所以你把后端的json格式变一下,前端更容易解析,比如定义这样的类
class Province{
private String name;
...其他属性
private List city;
getter/setter
...
}
class City{
private String name;
...
getter/setter
}
这样转换出来的就是[{name:"河南省",city:[{name:"南阳市"},{name:"郑州市"}]},{name:"山东省",city:[{name:"青岛"]},{name:"烟台"}}],这样在前端更好做,因为key都一样,前端只需要循环就可以了,如果你实在想用你呢种,稍微修改下[{},{},{}]为这样的格式,每个{}是一个map,map的key就是json的key,map的value就是json的value
直接使用map集合就好了,key作为省份,value作为list集合保存省份下的城市
在线工具http://jsrun.net/app/GqpKp
或者idea安装GsonFormat自动生成JavaBean即可,
手工的话,Map可行
List listHeBei=new ArrayList<>();
listHeBei.add("廊坊市");
listHeBei.add("保定市");
listHeBei.add("石家庄");
List listShanDong=new ArrayList<>();
listShanDong.add("济南");
listShanDong.add("青岛");
listShanDong.add("烟台");
List listHeNan=new ArrayList<>();
listHeNan.add("郑州市");
listHeNan.add("洛阳市");
listHeNan.add("开封");
Map map=new HashMap();
map.put("河北省", listHeBei);
map.put("山东省", listShanDong);
map.put("河南省", listHeNan);
JSON.toJSON(map);
System.out.println(JSON.toJSON(map));
最后形成JSON串:
[{"provice":"河北省","city":[{"city":"秦皇岛"},{"city":"烟台市"},{"city":"石家庄"}]},{"provice":"山东省","city":[{"city":"秦皇岛"},{"city":"烟台市"},{"city":"石家庄"}]}]