Json数组形式的字符串转为Map数组 Map集合的几种遍历方式

本文介绍如何使用 Java 对 JSON 数组形式的字符串进行转换,包括转换为 List 和 Map 结构,以及不同方法实现 key 和 value 的提取。同时,还展示了多种方式将 JSON 字符串解析为 Map 对象,并提供了遍历 Map 的多种示例。

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

    public static void main(String[] args) {

        // Json数组形式的字符串转为List
        String arrStr = "[{\"data1\":{\"name\":\"aa\",\"age\":\"12\"},\"data2\":{\"name\":\"bb\",\"age\":\"13\"}}]";
        Map<Object, Object> mapObj = ((List<Map<Object, Object>>) JSONArray.parse(arrStr)).stream().flatMap(mapList -> mapList.entrySet().stream()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b));
        System.out.println(JSON.toJSONString(new ArrayList<>(mapObj.values())));
        //[{"name":"bb","age":"13"},{"name":"aa","age":"12"}]

        // ******map.key 转 list*********************************
        // 方法1:传统方法
        List<Object> listKey = new ArrayList<>(mapObj.keySet());
        // 方法2:用stream
        List<Object> listKeyStream = mapObj.keySet().stream().collect(Collectors.toList());
        // 输出list内容
        listKey.forEach(System.out::println);
        //data2
        //data1

        // ******map.value 转 list*********************************
        // 方法1:传统方法
        List<Object> listValue = new ArrayList<>(mapObj.values());
        // 方法2:用stream
        List<Object> listValue2 = mapObj.keySet().stream().collect(Collectors.toList());
        // 输出list内容
        listValue.forEach(System.out::println);
        //{"name":"bb","age":"13"}
        //{"name":"aa","age":"12"}


        // Json数组形式的字符串转为Map数组
        String strArr = "[{\"name\":\"aa\", \"age\":\"12\"},{\"name\": \"bb\", \"age\":\"13\"}]";
        // 第一种方式
        List<Map<String, String>> listObjectFir = (List<Map<String, String>>) JSONArray.parse(strArr);
        // 利用JSONArray中的parse方法来解析json数组字符串
        for (Map<String, String> mapList : listObjectFir) {
            for (Map.Entry entry : mapList.entrySet()) {
                System.out.printf("%s  %s%n", entry.getKey(), entry.getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第二种方式
        List<Map<String, String>> listObjectSec = JSONArray.parseObject(strArr, List.class);
        // 利用JSONArray中的parseObject方法并指定返回类型来解析json数组字符串
        for (Map<String, String> mapList : listObjectSec) {
            for (Map.Entry entry : mapList.entrySet()) {
                System.out.printf("%s  %s", entry.getKey(), entry.getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第三种方式
        JSONArray listObjectThir = JSONArray.parseArray(strArr);
        // 利用JSONArray中的parseArray方法来解析json数组字符串
        for (Object mapList : listObjectThir) {
            for (Object entry : ((Map) mapList).entrySet()) {
                System.out.printf("%s  %s", ((Map.Entry) entry).getKey(), ((Map.Entry) entry).getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第四种方式
        List listObjectFour = JSONArray.parseArray(strArr, Map.class);
        // 利用JSONArray中的parseArray方法并指定返回类型来解析json数组字符串
        for (Object mapList : listObjectFour) {
            for (Object entry : ((Map) mapList).entrySet()) {
                System.out.printf("%s  %s%n", ((Map.Entry) entry).getKey(), ((Map.Entry) entry).getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第五种方式
        JSONArray listObjectFifth = JSONObject.parseArray(strArr);
        // 利用JSONObject中的parseArray方法来解析json数组字符串
        for (Object mapList : listObjectFifth) {
            for (Object entry : ((Map) mapList).entrySet()) {
                System.out.printf("%s  %s%n", ((Map.Entry) entry).getKey(), ((Map.Entry) entry).getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第六种方式
        List listObjectSix = JSONObject.parseArray(strArr, Map.class);
        // 利用JSONObject中的parseArray方法并指定返回类型来解析json数组字符串
        for (Object mapList : listObjectSix) {
            for (Object entry : ((Map) mapList).entrySet()) {
                System.out.printf("%s  %s%n", ((Map.Entry) entry).getKey(), ((Map.Entry) entry).getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第七种方式
        JSONArray listObjectSeven = JSON.parseArray(strArr);
        // 利用JSON中的parseArray方法来解析json数组字符串
        for (Object mapList : listObjectSeven) {
            for (Object entry : ((Map) mapList).entrySet()) {
                System.out.printf("%s  %s%n", ((Map.Entry) entry).getKey(), ((Map.Entry) entry).getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // 第八种方式
        List listObjectEigh = JSONObject.parseArray(strArr, Map.class);
        // 利用JSON中的parseArray方法并指定返回类型来解析json数组字符串
        for (Object mapList : listObjectEigh) {
            for (Object entry : ((Map) mapList).entrySet()) {
                System.out.printf("%s  %s%n", ((Map.Entry) entry).getKey(), ((Map.Entry) entry).getValue());
                //name  aa
                //age  12
                //name  bb
                //age  13
            }
        }

        // map集合遍历
        Map<String, String> tempMap = new HashMap<>();
        tempMap.put("a", "12");
        tempMap.put("b", "34");
        tempMap.put("c", "56");

        // 遍历方法一 hashmap entrySet() 遍历
        Iterator it = tempMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            Object key = entry.getKey();
            Object value = entry.getValue();
            System.out.printf("key=%s value=%s%n", key, value);
            //key=a value=12
            //key=b value=34
            //key=c value=56
        }

        // 遍历方法二
        for (Map.Entry<String, String> entry : tempMap.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.printf("key=%s value=%s%n", key, value);
            //key=a value=12
            //key=b value=34
            //key=c value=56
        }

        // 遍历方法三 hashmap keySet() 遍历
        for (Iterator i = tempMap.keySet().iterator(); i.hasNext(); ) {
            Object obj = i.next();
            // 循环输出key
            System.out.println(obj);
            System.out.printf("key=%s value=%s%n", obj, tempMap.get(obj));
            //a
            //key=a value=12
            //b
            //key=b value=34
            //c
            //key=c value=56
        }

        for (Iterator i = tempMap.values().iterator(); i.hasNext(); ) {
            Object obj = i.next();
            // 循环输出value
            System.out.println(obj);
            //12
            //34
            //56
        }

        // 遍历方法四 treemap keySet()遍历
        for (Object o : tempMap.keySet()) {
            System.out.printf("key=%s value=%s%n", o, tempMap.get(o));
            //key=a value=12
            //key=b value=34
            //key=c value=56
        }

        /**
         * java遍历 Map<Object, ArrayList> map = new HashMap <>();
         */
        //遍历方法一 Iterator
        Map<Object, ArrayList> map = new HashMap<>();
        Set<Object> keys = map.keySet();
        Iterator<Object> iterator = keys.iterator();
        while (iterator.hasNext()) {
            Object key = iterator.next();
            ArrayList arrayList = map.get(key);
            for (Object o : arrayList) {
                System.out.println(o);
            }
        }

        ////遍历方法二 map.entrySet()
        Map<Object, List> map2 = new HashMap<>();
        for (Map.Entry entry : map2.entrySet()) {
            String key = entry.getKey().toString();
            List list = (List) entry.getValue();
            for (Object value : list) {
                System.out.printf("%s====%s%n", key, value);
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值