• 技术文章 >java >java基础

    java之json串转Map的整理

    小妮浅浅小妮浅浅2021-01-19 10:30:17原创3438

    在字符串的转义上,我们有对应的json可以解决,一般而言是用于数据的传输,其中处理其解析的包也比较多。这里我们可以用其中的方法来进行转换。本篇以json转换成map为例,带来两张解决方法:FastJSON和Collectors.toMap,下面一起来看看这两种方法的不同解决。

    1.FastJSON方法

    Fastjson是阿里巴巴封装的,性能更快。

    package com.zkn.newlearn.json;
     
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import java.util.Map;
     
    /**
     * JSON字符串自动转换
     * Created by zkn on 2016/8/22.
     */
    public class JsonToMapTest01 {
     
        public static void main(String[] args){
     
            String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
            //第一种方式
            Map maps = (Map)JSON.parse(str);
            System.out.println("这个是用JSON类来解析JSON字符串!!!");
            for (Object map : maps.entrySet()){
                System.out.println(((Map.Entry)map).getKey()+"     " + ((Map.Entry)map).getValue());
            }
            //第二种方式
            Map mapTypes = JSON.parseObject(str);
            System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
            for (Object obj : mapTypes.keySet()){
                System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
            }
            //第三种方式
            Map mapType = JSON.parseObject(str,Map.class);
            System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!");
            for (Object obj : mapType.keySet()){
                System.out.println("key为:"+obj+"值为:"+mapType.get(obj));
            }
            //第四种方式
            /**
             * JSONObject是Map接口的一个实现类
             */
            Map json = (Map) JSONObject.parse(str);
            System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!");
            for (Object map : json.entrySet()){
                System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());
            }
            //第五种方式
            /**
             * JSONObject是Map接口的一个实现类
             */
            JSONObject jsonObject = JSONObject.parseObject(str);
            System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
            for (Object map : json.entrySet()){
                System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());
            }
            //第六种方式
            /**
             * JSONObject是Map接口的一个实现类
             */
            Map mapObj = JSONObject.parseObject(str,Map.class);
            System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
            for (Object map: json.entrySet()){
                System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());
            }
            String strArr = "{{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," +
                    "{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}}";
           // JSONArray.parse()
            System.out.println(json);
        }
    }

    2.Collectors.toMap

    json字符串其实总得来说就是一个key-value的形式,应该是满足了最终想要的Map<String, List<Unit>>的结构了,所以直接一个Collectors.toMap就搞定了。

    Map<String, List<Unit>> result = JSONObject.parseObject(s)
                                               .entrySet().stream()
                                               .collect(Collectors.toMap(Map.Entry::getKey, entry -> JSONObject.parseArray(String.valueOf(entry.getValue()), Unit.class)));

    注意s就是你那个json字符串。

    以上就是java之json串转Map的方法整理,对于主流的FastJSON方法来说,在处理json的转换上要想对麻烦一点,所以这里的Collectors.toMap就显得比较简单,适合初学者的使用。

    专题推荐:java json
    品易云
    上一篇:CompletableFuture在java中的报错处理 下一篇:Java Vector和ArrayList的异同分析

    相关文章推荐

    • 构造器与java方法的比较分析• Java中char字节的占用分析• java中int使用十六进制• CompletableFuture在java中的报错处理

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网