您的位置 首页 java

工具类JsonUtils完成json的序列化和反序列化

今天是刘小爱自学 Java 的第167天。

感谢你的观看,谢谢你。

学习计划安排如下:

  • 在导入数据到索引库的过程使用到了一个工具类JsonUtils,在此做一个总结说明。

很早之前就学过json,一直也在使用它,它就相当于前端与后台之间数据传输的一个媒介。

为了数据之间传输方便,在数据库中存的数据有的时候会设置成json格式的字符串。

而Java中数据的体现方法无外乎就是对象,所以会涉及到Json字符串的序列化与反序列化。

一、Json的序列化

JsonUtils工具类非常地强大,一共有5个方法,可以完成json字符串的各种转化。

其中涉及到了一个核心类 ObjectMapper ,下面的各种方法都是在该类的基础上实现的。

下文中的mapper就是指的ObjectMapper类的一个对象。

①json的序列化

toString ()方法可以将任意一个对象转换成json格式的字符串。

  • 第1个if条件语句判断对象是否为空。
  • 第2个if条件语句判断对象类型是否是字符串,
  • mapper调用writeValueAsString()方法可以将对象转换成json字符串。

Java普通对象,list集合以及map集合都可以直接使用该方法直接实现转换。

好,代码编写好后做一个测试:

自定义一个User类,有name和age两个属性,这里创建两个对象做一个测试。

调用toString()方法可以将对象转换成json格式的字符串,也就是上述中的userOneJosn。

同理也可以将List集合转换成json格式的字符串,也就是上述中的userListJson。

关于map集合也是一样的,就不赘述了。

以上也就实现了json的序列化。

二、Json的反序列化一

有序列化自然也会有反序列化。

②json的反序列化:转换成对象

toBean()方法转换json字符串成对象。

使用mapper调用readValue方法,参数有两个:

  • json:也就是json字符串。
  • tClass:也就是要转换成对象对应的Class对象。

③json的反序列化:转换成List

toList()方法转换json字符串成List集合。

使用mapper调用readValue方法,参数:

  • json:同样也是json字符串。
  • mapper.getTypeFactory().constructListType()说明集合的泛型。
  • List.class:也就是List集合的Class对象。
  • eClass也就是要转换成的集合中的对象对应的Class对象。

做个测试

反序列化等于是将序列化的过程反过来了。

上述两个json字符串都是序列化测试中的结果。

  • 调用toBean()方法可以将json字符串转换成一个对象。
  • 调用toList()方法可以将json字符串转换成一个List集合。

注意 :如果json字符串是一个集合时,也就是上述的listJson,调用toBean()方法会报错。

三、Json的反序列化二

除了普通对象和List集合,还有Map集合和一个通用方法。

④json的反序列化:转换成Map

toMap()方法转换json字符串成Map集合。

使用mapper调用readValue()方法,注意和toList()方法中的区别:

  • constructListType()对应的是List集合。
  • constructMapType()对应的是Map集合。

Map集合中要说明key和value对应的Class对象。

⑤json的反序列化通用版

对于该方法的理解,上述②③④能实现的都可以通过它实现。

观察其参数,第一个参数都是json字符串,主要在于第2个参数的不同。

其实②③④就相当于在该方法中做了一个垂直细分:

  • ②中toBean方法第二个参数直接说明了对象的Class对象。
  • ③中toList方法第二个参数通过constructListType()方法来说明。
  • ④中toMap方法第二个参数通过constructMapType()方法来说明。

做一个测试

调用toMap()方法将mapJson反序列化成一个map,也就是一个键值对,上述中key为1,value为一个User对象。

调用nativeRead()方法将json字符串转换成对应的对象。

上述例子中是一个比较复杂的json字符串,一个map集合,key为字符串,value为一个包含User对象的list集合。

最后

行有不得反求诸己,我是@刘小爱

一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。

文章来源:智云一二三科技

文章标题:工具类JsonUtils完成json的序列化和反序列化

文章地址:https://www.zhihuclub.com/185431.shtml

关于作者: 智云科技

热门文章

评论已关闭

5条评论

  1. Carefully dГ©bride devitalized tissue and foreign material 1998 May 15; 332 Pt 1 Pt 1 51 5

  2. gyne lotrimin levofloxacin oral solution ip uses in hindi Carefully, I dripped a bit of water on his mouth his lips worked, I saw them moving; and then, on my knees, like a servant boy in a story, I wiped some of the blood off his face with the paisley square from his pocket 001, and negative ER or PgR status were associated with poor disease free survival

  3. What’s up friends, pleasant paragraph and pleasant arguments commented at this place, I am actually enjoying by these.

网站地图