您的位置:首页 > Web前端 > JavaScript

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

2015-02-05 10:31 148 查看
一个无聊的需求是需要在后台把一个树形结构拼成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库里面找不到,后面改用第二种,整个过程还是有坑啊。。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: