现在的位置: 首页 > 综合 > 正文

拼上下级关系的json数据格式

2018年05月22日 ⁄ 综合 ⁄ 共 1234字 ⁄ 字号 评论关闭

一个无聊的需求是需要在后台把一个树形结构拼成json字符串。记录一下这个过程:

把下面那张图的数据列表拼成这样的串:
{"children":[{"children":[{"children":[ ],"id":"4","name":"d","pid":"2"},{"children":[ ],"id":"5","name":"e","pid":"2"}],"id":"2","name":"b","pid":"1"},{"children":[{"children":[ ],"id":"6","name":"f","pid":"3"}],"id":"3","name":"c","pid":"1"}],"id":"1","name":"a","pid":""}

json在线格式化查看工具可以用:http://tool.lu/json/

说下代码实现,先写个VO:

public class T {
private String id;
private String pid;
private String name;
private List<T> children = new ArrayList<T>();
...get...set方法...

//开始拼json
T jsonT = new T();
Map<String, T> map = new HashMap<String, T>();
for (T t : list) {
map.put(t.getId(), t);
}

for (T t : list) {
if(!map.containsKey(t.getPid())) {
jsonT = t;
} else {
T pt = map.get(t.getPid());
pt.getChildren().add(t);
}
}

JSONObject json=  JSONObject.fromObject(jsonT);
System.out.println(json.toString());

}

转换成json串有两种方式:

一、
json-lib-2.4-jdk15.jar
ezmorph-1.0.6.jar
用这两个jar包转换:

JSONObject json=  JSONObject.fromObject(jsonT);
System.out.println(json.toString());

二、
jackson-jaxrs-1.9.13.jar
jackson-core-asl-1.9.13.jar
jackson-mapper-asl-1.9.13.jar
用jackson的包

StringWriter writer = new StringWriter();
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(writer, rootVo);
bodyJson = new JSONObject(writer.toString());

第一种方式的jar包在maven库里面找不到,后面改用第二种,整个过程还是有坑啊。。

顺手记录一下,没啥用的一篇文章。

抱歉!评论已关闭.