java处理List<String>的内容将其转换成标准json格式

我们书写网页前台页面需要数据的时候,这些数据通常都是存放在数据库中的,因此我们无法直接将其显示在前台页面中,所以需要对其进行处理操作,一般情况下使用json格式的数据可以在前台方便的使用,因为可以借助js来操作json格式的数据,实现前后台的交互作用,下边我们举个例子:

List<String> nodes = new ArrayList<String>();
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<String> nodes = new ArrayList<String>();
        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<JSONObject> getlist = getJsonobject(nodes, "-1");
        System.out.println(JSONObject.toJSONString(getlist));
    }

    private static List<JSONObject> getJsonobject(List<String> list, String startidid) {
        List<JSONObject> jsonObjects = new ArrayList<JSONObject>();
        for (String s : list) {
            JSONObject jsonObject = JSONObject.parseObject(s);
            String pid = jsonObject.getString("pid");
            if (pid.equals(startidid)) {
                String id = jsonObject.getString("id");
                List<JSONObject> child = getJsonobject(list, id);
                if (child.size() > 0) {
                    jsonObject.put("child", child);
                }
                jsonObjects.add(jsonObject);
            }

        }
        return jsonObjects;
    }
}
上边的代码主要使用了递归的方式来对list集合中的数据进行遍历和获取。

这时候运行程序我们可以在控制台上看出结果一般的我们不易发现此格式是否正确,一般情况下我们可以到该网站下测试我们控制台内容检验生成的json格式是否正确,json在线解析
在实际开发中我们可以将其写到一个工具类中,这样便于使用,随用随调。这样就可以方便的借些内容了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uniquewdl

匆忙的人生,总有你喜欢的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值