• java 使用fast json 与 Map List互相转换


    import com.alibaba.fastjson.JSON;
    import com.imooc.vo.Person;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    public class JsonMapListUtil {
        public static void main(String[] args) {
    
            // Map 与 Json 互转
            Map<Integer,Integer> integerMap=Map.of(11,22,44,55,66,77,100,200);
            String integerMapString= JSON.toJSONString(integerMap,true);
            System.out.println("integerMapString:"+integerMapString);
    
            //默认类型 会转换成JSONObject类型,即 Map<String,Object>的子类
            Map<String,Object> objMap=JSON.parseObject(integerMapString);
            System.out.println("objMap: "+objMap);
            //objMap: {"66":77,"11":22,"44":55,"100":200} 此时的key类型为String,与之前不一致
    
            // 后面加 Map.class 转换为 Map类型,这个方式不是太好
            Map<Integer,Integer> objMap22=JSON.parseObject(integerMapString,Map.class);
    //        Map<Object,Object> objMap22=JSON.parseObject(integerMapString,Map.class);
            System.out.println("objMap22: "+objMap22);
            // {66=77, 100=200, 11=22, 44=55}  此时结果是正确的,与之前的类型一致
            
            for (Map.Entry<Integer,Integer> entry:objMap22.entrySet()){
                System.out.println(entry.getKey() instanceof Integer); //全部 true
                System.out.println(entry.getValue() instanceof Integer);//全部 true
            }

         
    Map<String,Integer> obj = new HashMap<>();
            {
                obj.put("key1", 200);
                obj.put("key2", 11);
                obj.put("key3", 33);
            }
    
    //        Map 转 Json
            String jsonResult=JSON.toJSONString(obj);
            System.out.println("Map转JSON结果:"+jsonResult);
    
    //       方法一、 Json 转 Map<String,Integer>
            Map<String, Integer> params = JSON.parseObject(jsonResult, new TypeReference<Map<String, Integer>>(){});
            System.out.println("params: "+params);
    //        方法二、Json 转 Map
            Map<String, Integer> params1 = JSONObject.parseObject(jsonResult, new TypeReference<Map<String,Integer>>(String.class,Integer.class){});
            System.out.println("params1: "+params1);
            System.out.println(params+" 各参数类型******");
    
            for (Map.Entry<String,Integer> entry:params.entrySet()){
                System.out.println(entry.getKey() instanceof String);
                System.out.println(entry.getValue() instanceof Integer);
            }
            System.out.println(params1+" 各参数类型******");
            for (Map.Entry<String,Integer> entry:params1.entrySet()){
                System.out.println(entry.getKey() instanceof String);
                System.out.println(entry.getValue() instanceof Integer);
            }
            //方法三、 Json 转 Map
            System.out.println("新的方法:"+parseToMap(jsonResult,String.class,Integer.class));
    
            //TypeReference protected类型 通过 实例化子类 或者 匿名类 的方式获取实例对象
            TypeReference<Map<String,Integer>> typeReference=new TypeSon();
            System.out.println("TypeReference 子类获取的类型:"+typeReference.getType().getTypeName());
        }
        // 继承自 TypeReference<T> 的子类
        static class TypeSon extends TypeReference<Map<String,Integer>>{}
    
        // json 转 Map 方法,带泛型的 Map
        public static <k,v> Map<k,v> parseToMap(String json,Type k, Type v){
            return JSON.parseObject(json,new TypeReference<Map<k,v>>(k,v){});
        }
    
    
    
     
            
            // List 与 Json 互转
            List<Person> people=new ArrayList<>();
            people.add(new Person("zhangsan"));
            people.add(new Person("zhangsan22"));
            people.add(new Person("zhangsan33"));
    
            String peopleJson= JSON.toJSONString(people,true);
            System.out.println("peopleJson:"+peopleJson);
    
            List<Person> people1=JSON.parseArray(peopleJson,Person.class);
            System.out.println("people1:"+people1);
    
            List<String> pp=List.of("11","22","33");
            String ppJson=JSON.toJSONString(pp,true);
            System.out.println("ppJson:"+ppJson);
    
            List<String> pp1=JSON.parseArray(ppJson,String.class);
            System.out.println("pp1:"+pp1);
            System.out.println("pp:"+pp);
    
            List<Integer> ppp=List.of(11,22,33);
            String pppJson=JSON.toJSONString(ppp,true);
            System.out.println("pppJson:"+pppJson);
    
    //        List<Integer> ppp1=JSON.parseArray(pppJson,Integer.class);
            List<Object> ppp1=JSON.parseArray(pppJson);
            System.out.println("ppp1:"+ppp1);
            System.out.println("ppp:"+ppp);
            for (Object i:ppp1){
                System.out.println(i instanceof Integer);
                System.out.println(i instanceof String);
            }
        }
       }
  • 相关阅读:
    JEECG 不同(角色的)人对同样的字段数据,使用不同的字段验证规则
    CRM系统设计方案
    MySql concat与字符转义
    MYSQL 三元 函数
    Linux watchdog
    Prometheus & SoundCloud
    Docker存储驱动Device Mapper,Overlay,AUFS
    linux的nohup命令
    Eclipse Todo Tasks 任务试图
    Mysql drop function xxxx ERROR 1305 (42000): FUNCTION (UDF) xxxx does not exist
  • 原文地址:https://www.cnblogs.com/xiaoxiao075/p/13476321.html
Copyright © 2020-2023  润新知