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 list = JSON.parseArray("[{"id":1001,"info":"床前明月光,地上鞋一堆。床上大队长,高喊两块一双","name":"唐诗三百首"}]",Book.class);
System.out.println(list.get(0).toString());
//2.转化:["一二三","二三四","三四五"]
List list1 = JSON.parseArray("["一二三","二三四","三四五"]",String.class);
System.out.println(list1.get(2));
}
}
运行结果:



