JSON的两种解析方式:Gson和Fastjson,下面来看下这两种解析方法怎样使用,并且他们有哪些区别。

1.Gson:

Gson是谷歌的一款JSON解析工具。

功能①:将对象转化为JSON字符串

步骤:首先引入JAR包

1。在当前项目下新创建“lib”目录

2。然后将下载好的Gson包复制到此目录

3。将添加进来的包配置好。 

然后就可以在需要转换JSON字符串的位置编写代码:

String json = new Gson().toJson(/*要转换的对象*/)

功能②:将JSON字符串转换为对象

在添加完JAR包后,我们只需要在要转换的位置编写:

对象 = new Gson().formJson(Json字符串,对象类型.class)

注意:1.我们用来获得的对象和formJson方法第二个参数的类型是相同的。

2.在转化的过程中,若是用来获得的对象中包含Json字符串中的属性就可以转出,若是不包含的属性就会丢失。

3.若是在转换的过程中没有一个类型可以与之相对,我们可以将其转化为一个MAP集合。

4.若是Json中有一个属性是数组,则转换后是一个ArrayList集合。

示例1——将对象转化为Json字符串:

Book类:

public class Book {private int id;private String name;private String info;public Book() {}public Book(int id, String name, String info) {this.id = id;this.name = name;this.info = info;} public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}
public class Demo1 {public static void main(String[] args) {Book b1 = new Book(1001,"金苹果","种植苹果很辛苦");Gson g = new Gson();String text = g.toJson(b1);System.out.println(text);}
}

运行结果: 

示例2——将JSON字符串转换为对象:

public class Demo2 {public static void main(String[] args) {Gson g = new Gson();//转化:{"id":1001,"name":"金苹果","info":"种植苹果很辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿额嘿嘿额hi"]}Book b = g.fromJson("{\"id\":1001,\"name\":\"金苹果\",\"info\":\"种植苹果很辛苦\"}",Book.class);System.out.println(b.getId()+2);HashMap data =g.fromJson("{\"id\":1001,\"name\":\"金苹果\",\"info\":\"种植苹果很辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿额嘿嘿额hi\"]}", HashMap.class);System.out.println(data.get("page").getClass());}
}

运行结果:

2. Fastjson

Fastjson是阿里的一款JSON解析工具。

功能与Gson相同,也分为将对象转为JSON字符串和将JSON字符串两种,我们来说一下两种功能如何实现。

功能①:将对象转化为JSON字符串

步骤1.引入Fastjson的JAR包。

步骤2.在需要转化为JSON字符串的位置编写入下代码:

String json = JSON.toJSONString(要转化的对象)

功能②:将JSON字符串转化为对象

步骤1:引入JAR包。

步骤2:在需要转化的位置编写入下代码:

类型 对象名 = JSON.parseObject(JSON字符串,类型.class)
或
List<类型> list = JSON.parseArray(JSON字符串,类型.class)

注意:第二行在JSON字符串是数组的时候才使用,如果字符串中没有数组则会出现异常 JSONException。

示例:

//个人理解:转换的原理,JSON是字符串型的,在转成json文件就是字符串,
//        提出来时,根据接收对象的类型来判断每个属性是什么类型,然后在将字符串转换成正确的类型
public class demo5 {public static void main(String[] args) {Book b = new Book(1001,"唐诗三百首","床前明月光,地上鞋一堆。床上大队长,高喊两块一双");String s = JSON.toJSONString(b);System.out.println(s);}
}

运行结果:

示例二:

public class Demo6 {public static void main(String[] args) {//1.转化:"{\"id\":1001,\"info\":\"床前明月光,地上鞋一堆。床上大队长,高喊两块一双\",\"name\":\"唐诗三百首\"}"Book b =JSON.parseObject("{\"id\":1001,\"info\":\"床前明月光,地上鞋一堆。床上大队长,高喊两块一双\",\"name\":\"唐诗三百首\"}",Book.class);System.out.println(b.getId()+3);List<Book> list = JSON.parseArray("[{\"id\":1001,\"info\":\"床前明月光,地上鞋一堆。床上大队长,高喊两块一双\",\"name\":\"唐诗三百首\"}]",Book.class);System.out.println(list.get(0).toString());//2.转化:["一二三","二三四","三四五"]List<String> list1 = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]",String.class);System.out.println(list1.get(2));}
}

运行结果:

JSON的两种解析方式相关推荐

  1. JSON的三种解析方式以及JSONObject、JSONArray区别

    JSON的常用两种解析方式 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串 ...

  2. xml的两种解析方式:sax,dom4j

    两种解析方式的优缺点:     sax解析:优点:不需要读取整个文件,并且将其储存在内从中,不耗费内存资源,才用触发监听的方式,文件读到哪里触发相应方法.         缺点:不能反复调用,每次解析 ...

  3. json文件两种读取方式

    json文件两种读取方式 这是一段两个人的对话标注抄本 [{"start_time": {"original": "0:00:00.611000&qu ...

  4. XML常见的两种解析方式总结

    XML解析方式 在程序开发过程中,经常需要对XML文档进行解析,常见套路往往是:XML文档–>XML解析器<–>API<–>应用程序.经常用到的解析方式如下: - DOM ...

  5. JSON格式转MAP之常用两种解析方式

    public static void main(String[] args) {String jsonStr = "{\"payTime\":\"2022-11 ...

  6. Spring AOP两种使用方式以及如何使用解析

    AOP是一种面向切面编程思想,也是面向对象设计(OOP)的一种延伸. 在Spring实现AOP有两种实现方式,一种是采用JDK动态代理实现,另外一种就是采用CGLIB代理实现,Spring是如何实现的 ...

  7. 两种include方式及filter中的dispatcher解析

    两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...

  8. kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式...

    2019独角兽企业重金招聘Python工程师标准>>> 今天要说的干货是:以Kotlin,在MVP模式下(OKHttp和 Retrofit+RxJava)网络请求两种实现方式的一个小 ...

  9. 简单谈谈ActiveMQ的两种消费方式

    ActiveMQ 有两种消费方式,一种是q,一种是订阅式的.用q的方式提供生产的话始终保存在服务端,直到一个消费者把他消费完才可以返回一个状态.然后就是订阅的方式可以供多个消费者同时消费.我们当时用的 ...

最新文章

  1. python手册中文版apk-python怎么打包apk
  2. element-ui中单独引入Message组件的问题
  3. 创建ROS消息和服务---ROS学习第8篇
  4. 面对不可避免的故障,我们造了一个“上帝视角”的控制台
  5. 2020年终总结暨组会PPT20201229《复现chen密度径向分布结果》
  6. text/html与text/plain有什么区别?
  7. 【Android压力测试】monkey压力测试
  8. oracle 存储过程 db,oracle数据库的存储过程是什么?
  9. Razor视图引擎 语法学习(一)
  10. 暴雪准备用AI打击“游戏喷子”
  11. 不重复计数函数php,EXCEL多条件不重复计数函数是什么
  12. thinkphp5 数据库 链接 Connection
  13. Tensorflow 2.0 : FCNN
  14. 磁力云播Android代码,磁力云播
  15. thinkpad systemupdate 下载软件存放的位置
  16. 3d打印实用小工具--GCode Viewer在线预览GCODE文件
  17. 怎么架设魔兽世界服务器?
  18. 对话月薪10万的技术老兵:技术人如何开心工作、快乐赚钱?
  19. 第844期机器学习日报(2017-01-09)
  20. 游戏设计模式阅读笔记19——优化模式(空间分区)

热门文章

  1. ARM开发(6)系统移植初步(搭建交叉开发环境)
  2. PipeCAD之管道标准库PipeStd(2)
  3. [附源码]Python计算机毕业设计Django的网上点餐系统
  4. IBM服务器专用无线键盘,经典老物分享:IBM UltraNav USB小型键盘
  5. pytorch建立mobilenetV3-ssd网络并进行训练与预测
  6. 《A Definitive Guide to Apache ShardingSphere》海外正式上市
  7. 网页制作表单代码java_JSP动态网页入门:表单输入例子
  8. 让电脑不被锁屏的方法
  9. html怎么插入flash,Dreamweaver如何插入flash动画
  10. Philosophy of life: Love and Time