我们书写网页前台页面需要数据的时候,这些数据通常都是存放在数据库中的,因此我们无法直接将其显示在前台页面中,所以需要对其进行处理操作,一般情况下使用json格式的数据可以在前台方便的使用,因为可以借助js来操作json格式的数据,实现前后台的交互作用,下边我们举个例子:
List nodes = new ArrayList();
nodes.add("{id:1,pid:-1,name:'XX国际集团'}");
nodes.add("{id:2,pid:1,name:'软件外包模块'}");
nodes.add("{id:3,pid:1,name:'互联网模块'}");
nodes.add("{id:4,pid:1,name:'行业建设模块'}");
nodes.add("{id:5,pid:1,name:'教育模块'}");
nodes.add("{id:6,pid:2,name:'dd业务'}");
nodes.add("{id:7,pid:2,name:'zz移动业务线'}");
nodes.add("{id:8,pid:2,name:'zz业务线'}");
nodes.add("{id:9,pid:2,name:'yy业务线'}");
nodes.add("{id:10,pid:3,name:'ddee运营'}");
nodes.add("{id:11,pid:3,name:'aagg总部'}");
nodes.add("{id:12,pid:4,name:'通信行业项目'}");
nodes.add("{id:13,pid:4,name:'烟草行业项目'}");
nodes.add("{id:14,pid:4,name:'金融行业项目'}");
nodes.add("{id:15,pid:4,name:'能源行业项目'}");
nodes.add("{id:16,pid:5,name:'北京ETC'}");
nodes.add("{id:17,pid:5,name:'华中ETC'}");
nodes.add("{id:18,pid:5,name:'南方ETC'}");
对nodes集合进行递归,重新组合数据,组成如下JSON集合格式:
[id:1,name:"XX国际集团",children:[
{id:2,name:"软件外包模块",childred:[
{id:6,name:"dd"},
{id:7,name:"ddff业务线"},
{id:8,name:"adef业务线"},
{id:9,name:"eg业务线"},
]}]
这时候我们可能是无从下手但是通过fastjson.jar包提供了一些类可以帮助我们解决问题。我们需要导入fastjson-1.x.x.jar版本的jar包(可以在网上下载)。本次主要使用的就是JSONObject对象,
实例代码如下:
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class TransJson {
public static void main(String[] args) {
// TODO Auto-generated method stub
List nodes = new ArrayList();
nodes.add("{id:1,pid:-1,name:'xxx集团'}");
nodes.add("{id:2,pid:1,name:'软件外包模块'}");
nodes.add("{id:3,pid:1,name:'互联网模块'}");
nodes.add("{id:4,pid:1,name:'行业建设模块'}");
nodes.add("{id:5,pid:1,name:'教育模块'}");
nodes.add("{id:6,pid:2,name:'def业务'}");
nodes.add("{id:7,pid:2,name:'defg业务线'}");
nodes.add("{id:8,pid:2,name:'asd业务线'}");
nodes.add("{id:9,pid:2,name:'asd务线'}");
nodes.add("{id:10,pid:3,name:'ggdd运营'}");
nodes.add("{id:11,pid:3,name:'eedd总部'}");
nodes.add("{id:12,pid:4,name:'通信行业项目'}");
nodes.add("{id:13,pid:4,name:'烟草行业项目'}");
nodes.add("{id:14,pid:4,name:'金融行业项目'}");
nodes.add("{id:15,pid:4,name:'能源行业项目'}");
nodes.add("{id:16,pid:5,name:'北京ETC'}");
nodes.add("{id:17,pid:5,name:'华中ETC'}");
nodes.add("{id:18,pid:5,name:'南方ETC'}");
JSONObject jsonObject = new JSONObject();
List getlist = getJsonobject(nodes, "-1");
System.out.println(JSONObject.toJSONString(getlist));
}
private static List getJsonobject(List list, String startidid) {
List jsonObjects = new ArrayList();
for (String s : list) {
JSONObject jsonObject = JSONObject.parseObject(s);
String pid = jsonObject.getString("pid");
if (pid.equals(startidid)) {
String id = jsonObject.getString("id");
List child = getJsonobject(list, id);
if (child.size() > 0) {
jsonObject.put("child", child);
}
jsonObjects.add(jsonObject);
}
}
return jsonObjects;
}
}
上边的代码主要使用了递归的方式来对list集合中的数据进行遍历和获取。
这时候运行程序我们可以在控制台上看出结果一般的我们不易发现此格式是否正确,一般情况下我们可以到该网站下测试我们控制台内容检验生成的json格式是否正确,json在线解析。
在实际开发中我们可以将其写到一个工具类中,这样便于使用,随用随调。这样就可以方便的借些内容了。