listmap(List<Map>)转数组形式的json字符串

本文介绍如何将List<Map>类型的数据转换为数组形式的JSON字符串,适用于Echarts图表数据处理。通过示例代码展示转换过程,包括创建数组、遍历赋值和转换成JSON。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近工作做Echarts图表比较多,想一些柱形图、折线图类型的图表,所需的数据一般都是一个数组。我采用的是在后端将数据处理成多个数组,拼接成json字符串返回前端使用。这其中查询出来的是listmap类型的数据,需要转成多个数组,并拼接成json串。如图1,是查询出来的数据。
图1
需要把上图形式的数据改成下面所示的数据。

{"name":["2012","2013","2014","2015","2016"],"xmje":["15.2314","15.2314","15.2314","15.2314","15.2314"],"xms":["36","37","38","39","40"]}

话不多说直接上代码。

/**
     *
     *  数组类图表数据转换,查询的list转数组组
     *
     *  @作者:     zktian
     *  @创建日期:  2021-7-8 11:35
     *  @参数:     list 查询出的数据
     *  @参数:     map  名称对应   key-json内元素值,value-sql查询时设置的值
     *  @返回值:   JSONObject
     *
     */
 public static JSONObject LinelistToarays(List<Map<String, Object>> list, Map<String, Object> map){
        LinkedHashMap<String, Object> arraysmap = new LinkedHashMap<>();
        for (String key:map.keySet()){
            String[] a = new String[list.size()];
            Arrays.fill(a,"0");
            arraysmap.put(key,a);
        }
        for (int i=0;i<list.size();i++){
            Map listmap = list.get(i);
            for (String key:map.keySet()){
                if (listmap.get(map.get(key))!=null){
                    String[] s = (String[])arraysmap.get(key);
                    s[i] = listmap.get(map.get(key)).toString();
                    arraysmap.put(key,s);
                }
            }
        }
        JSONObject jsonObject = new JSONObject(arraysmap);
        return jsonObject;
    }

在这个方法中需要传两个参数,第一个list是从数据库查询出的数据。第二个参数是一个map,这个参数存在的意义是用来做参数对应。如下表

名称含义
key表示json中的key
value表示sql查询时的别名

执行方法时
1.首先根据传入的map批量创建数组并存到另一个map中(arraysmap)。
2.其次遍历list,在list中,遍历map,先将arraysmap中对应的数组取出,根据list的遍历次数给该数组赋值,在将数组放到arraysmap中。
3.arraysmap转json
4.return

下面我们测试一下

@Test
    public void run1(){
        List<Map<String, Object>> list = new ArrayList<>();
        for (int i=0;i<5;i++){
            Map<String, Object> map = new HashMap();
            map.put("name",2012+i);
            map.put("xms",36+i);
            map.put("xmje","15.2314");
            list.add(map);
        }
        System.out.println(list);
        Map<String, Object> maps = new HashMap<>();
        maps.put("name","name");
        maps.put("xms","xms");
        maps.put("xmje","xmje");
        JSONObject jsonObject = LinelistToarays(list,maps);
        System.out.println(jsonObject);
    }

我们在list中放入一些测试数据,执行方法,运行。

运行结果

list:[{name=2012, xmje=15.2314, xms=36}, {name=2013, xmje=15.2314, xms=37}, {name=2014, xmje=15.2314, xms=38}, {name=2015, xmje=15.2314, xms=39}, {name=2016, xmje=15.2314, xms=40}]
json:{"name":["2012","2013","2014","2015","2016"],"xmje":["15.2314","15.2314","15.2314","15.2314","15.2314"],"xms":["36","37","38","39","40"]}

完美,又省事了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值