json转换工具_如何优雅的进行obj与json的转换

前段时间,有个小哥问我JSON转换的问题?

    他说,我们平时使用最多的JSON转换工具是什么,其实现在JSON转换的框架比较多,例如:

Jackson,Gson,Fastjson都可以实现Gson主要在安卓开发中用的较多

1、JSON介绍  

    JSON(JavaScript Object Notation)全称Js对象符号,是一种轻量级的数据交换格式,它基于 ECMAScript 标准规范。采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

2、JSON的使用场景

      JSON用的最多的地方莫过于Web以及移动APP的应用,也就是说不管是用手机还是电脑访问互联网,都会涉及到JSON的数据传输

12825c03bdb08b152d7f2d50df2d7c01.png

34f0d2d107ec34c1ce99013299498264.png

3、JSON长啥样

      json有两种数据格式

      1、数组方式

[{"id" : 1 ,"name" : "xiaoming"},{"id" : 2 , "name" : "xiaohong"}]

      2、对象方式

{"username":"zhangsan","age":28,"password":"123","addr":"北京"}

4、Java对象到Json的转换

       1、定义Java对象  

@Data@NoArgsConstructorpublic class Person{   private String name;   private int age;}

     2、使用gson转换json

             1、添加依赖

<dependency>    <groupId>com.google.code.gsongroupId>    <artifactId>gsonartifactId>    <version>2.8.6version>dependency>

           2、转换,序列化与反序列化

 GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setDateFormat("yyyy-MM-dd hh:mm:ss");  //设置日期格式 Gson gson = gsonBuilder.create();  Person person = new Person("jack",new Date()); String s = gson.toJson(person); System.out.println("s = " + s);    //转换json Person p1 = gson.fromJson(s,Person.class); System.out.println("p1 = " + p1);  //反序列化person对象

      3、使用jackson转换json

           1、添加依赖

<dependency>    <groupId>com.fasterxml.jackson.coregroupId>    <artifactId>jackson-databindartifactId>    <version>2.7.4version>dependency>

          2、转换,序列化与反序列化

ObjectMapper objectMapper = new ObjectMapper();objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"));Person person = new Person("jack",new Date());String string = objectMapper.writeValueAsString(person);   //序列化jsonSystem.out.println("string = " + string);Person p1 = objectMapper.readValue(string, Person.class);//反序列化person对象System.out.println("p1 = " + p1);

      4、使用fastJson转换json

           1、添加依赖

<dependency>    <groupId>com.alibabagroupId>    <artifactId>fastjsonartifactId>    <version>1.1.23version> dependency>

           2、转换,序列化与反序列化

Person person = newPerson("jack",new Date());String string = JSON.toJSONString(person, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteDateUseDateFormat);System.out.println("string = " + string);//序列化JSONPerson p1 = JSON.parseObject(string,Person.class);//反序列化Person对象System.out.println("p1 = " + p1);

5、总结

      代码书写方面,fastjson最简洁,jackson与gson次之

     性能方面:把Java对象JSON序列化,

                      Jackson速度最快,在测试中比Gson快接近50%,FastJSON和Gson速度接近。 
                      把JSON反序列化成Java对象,

                       FastJSON、Jackson速度接近,Gson速度稍慢,不过差距很小

附、使用rain-tool工具库的core组件转换json

       1、简介

           rain-tool是本人结合这几年的工作经历,封装的一套关于Java产品开发各个方面的工具库,其中就包含了json的转换

           详情请访问:https://gitee.com/windsound/rain.git

       2、使用

            1、引入依赖

<dependency>           <groupId>com.gitee.windsoundgroupId>      <artifactId>rain-mybatis-toolartifactId>      <version>1.0.0version>dependency>

            2、转换,序列化与反序列化

Person person = new Person("jack",new Date());String s = JSONUtil.toJson(person);   //序列化jsonSystem.out.println("s = " + s);Person parse = JSONUtil.parse(s, Person.class);  //反序列化person对象System.out.println("parse = " + parse);

         3、结语

              大家会发现,使用rain-tool转换json,代码更简洁,

              同时,内部依赖采用了Jackson,从而也保证了性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值