FastJson学习笔记

一、java对象、List、Map序列化为Json格式字符串

   @Test
   //student对象转为json字符串
   public void testObjectJson(){
        Student student=new Student();
        student.setId(1);
        student.setName("张三");

        //student对象转为json字符串
        String json = JSON.toJSONString(student);
        System.out.println(json);
        //{"id":1,"name":"张三"}
    }

    @Test
    //将list转为json字符串
    public void studentList(){
        Student student1=new Student();
        student1.setId(1);
        student1.setName("张三");

        Student student2=new Student();
        student2.setId(2);
        student2.setName("李四");

        List<Student> studentList = new ArrayList<Student>();
        studentList.add(student1);
        studentList.add(student2);

        //将list转为json字符串
        String jsonString = JSON.toJSONString(studentList);
        System.out.println(jsonString);
        //[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]
    }

    @Test
    //将Map转为Json格式字符串
    public void studentMap(){
        Student student3 = new Student();
        student3.setId(3);
        student3.setName("张三");

        Student student4 = new Student();
        student4.setId(4);
        student4.setName("李四");

        Map<String , Student> studentMap = new HashMap<String , Student>();
        studentMap.put("student3" , student3);
        studentMap.put("student4" , student4);

        //将Map转为Json格式字符串
        String studentMapToString = JSON.toJSONString(studentMap);
        System.out.println(studentMapToString);
        //{"student4":{"id":4,"name":"李四"},"student3":{"id":3,"name":"张三"}}
    }

二、Json格式字符串反序列化为java对象,List , Map

    @Test
    //Json格式字符串反序列化回到list
    public void testMapJson(){
        String jsonList = "{\"student4\":{\"id\":4,\"name\":\"李四\"},\"student3\":{\"id\":3,\"name\":\"张三\"}}";
        //传递json格式字符串,添加泛型转Map集合时会报错,不添加则转后的Map没有泛型,时不安全的
        //fastJson没有直接转换Map的方法,调用parseObject,传递参数,new 一个TypeReference类型:在TypeReference类型中,转递转换后的Map集合
        Map<String , Student> studentMaps = JSON.parseObject(jsonList , new TypeReference<Map<String ,Student>>(){});
        for(String key : studentMaps.keySet()){
            System.out.println(key + ":" + studentMaps.get(key));
        }
    }

    @Test
    //Json格式字符串反序列化回到list
    public void testListJson(){
        String jsonList = "[{\"id\":1,\"name\":\"张三\"},{\"id\":2,\"name\":\"李四\"}]";
        //传递json格式字符串,传递转换后的集合的泛型的class的对象
        List<Student> studentLists = JSON.parseArray(jsonList , Student.class);
        for (Student studentList : studentLists){
            System.out.println(studentList);
        }
    }


    @Test
    //Json格式字符串反序列化回到java对象
    public void testJsonObject(){
        String jsonString = "{\"id\":5,\"name\":\"张三\"}";
        //传入需要序列化的json字符串,Student.class代表需要返回的对象类型是student
        Student student5 = JSON.parseObject(jsonString , Student.class);
        System.out.println(student5);
        //Student{id=5, name='张三'}
    }

三、@JSONField注解应用

    //@JSONField(name = "studentName"):指定序列化之后的属性名
    //@JSONField(ordinal = 2):执行序列化之后的属性排序,数值越小,顺序靠前
    //@JSONField(format = "YYYY-MM-dd HH-mm-ss") : 格式化序列化之后的时间格式
    //@JSONField(serialize = false)是否序列化该字段,默认值为true
    
    private Integer id;
    @JSONField(name = "studentName" , ordinal = 1)

    private String name;
    @JSONField(ordinal = 2)

    private Integer age;
    
    @JSONField(serialize = false)
    private String email;

    private boolean flag;

    @JSONField(format = "YYYY-MM-dd HH-mm-ss")
    private Date birthday;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值