JSON解析
JSON的解析是通过使用外部API来实现的,常用的外部API有两种,一种是有Google公司推出的Gson,另一个是阿里巴巴公司推出的FastJson,来进行JSON字符串与对象的互相转换.
因为是采用外部类库进行解析,所以不管采用哪种外部API,在解析时第一步要做的就是引入JAR包.
如何引入JAR包,可以见以下两个链接:
Gson对JSON进行解析
通过Gson对JSON进行解析,第一步要做的就是创建Gson对象,然后再开始进行转换.
将对象转换为JSON字符串:
class Love{
int id;
String boyFriend;
String gireFriend;
public Love(int id, String boyFriend, String gireFriend) {
this.id = id;
this.boyFriend = boyFriend;
this.gireFriend = gireFriend;
}
}
public class Demo1 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换
Love b = new Love(100,"lmz","xxq");
String s = g.toJson(b);
System.out.println(s);
}
}
输出结果如下:
{"id":100,"boyFriend":"lmz","gireFriend":"xxq"}
该输出结果即为JSON格式下的输入该内容.
将JSON字符串转换为对象:
public class Demo3 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换 :
//通过哈希表对数据进行存储
HashMap data = g.fromJson("{\"id\":100,\"boyFriend\":\"lmz\",\"gireFriend\":\"xxq\",\"way\":[\"武汉出游\",\"学期浪漫\",\"每月礼物\"]}", HashMap.class);
List page = (List) data.get("way");
System.out.println(page.get(1));
}
}
此处需要注意一点是,JSON中的数组通过Gson转义,是通过ArrayList集合的方式对数据进行存储的,理论上可以无限扩容和无限嵌套.
FastJson对JSON的解析
Fast J送在对JSON进行解析时不需要创建FastJson对象,直接解析即可.
将对象转换为JSON
class Love{
int id;
String boyFriend;
String gireFriend;
public Love(int id, String boyFriend, String gireFriend) {
this.id = id;
this.boyFriend = boyFriend;
this.gireFriend = gireFriend;
}
}
public class Demo4 {
public static void main(String[] args) {
Love l = new Love(001,"lmz","xxq");
//1. 转换
String json = JSON.toJSONString(l);
System.out.println(json);
}
}
FastJson和Gson对JSON的解析本质上的效率相差不大,只是厂商略有不同,在选择时,在国内更偏向于FastJson进行开发使用,但是FastJson在过去的版本中出现过大型漏洞,而Gson未出现过大型漏洞,大家可以根据不同的应用场景进行选择使用哪种方式来解析JSON.