JAVA对Json数据的解析(Gson&FastJson)
java中对json数据的处理可以分为以下两种
- 将Java中的对象快速的转换为JSON格式的字符串.
- 将JSON格式的字符串, 转换为Java的对象.
而本文介绍的解析方式是Gson和FastJson,而Gson和FastJson都需要引入jar包,下载链接如下
而对于如何引入jar文件,可以参考我另一篇文章:IDEA引入jar文件
首先就是Gson,Gson是谷歌针对于Json数据处理而诞生的一种解析方式,而FastJson则属于阿里。
1.Gson
(1) 将Java中的对象转换为JSON格式的字符串
使用Gson处理json数据很简单,只需要使用toJson方法就可以将对象转换成json格式的字符串,首先我们创建一个Book对象,其属性包含以下几个,然后生成相应的set/get/tostring方法和构造方法
private int id; //id
private String name; //图书名
private String author; //作者
private String info; //简介
private double price; //价格
然后创建一个Book对象,使用toJson方法
Book book = new Book(1,"新年快乐","张三","嘿嘿哈哈",18.8); //创建图书对象
String s = new Gson().toJson(book); //使用Gson的toJson方法将Book对象转换为Json字符串
System.out.println(s); //打印图书对象,以toString方法进行输出
打印结果如下,即为json格式字符串
{"id":1,"name":"新年快乐","author":"张三","info":"嘿嘿哈哈","price":18.8}
(2) 将JSON格式的字符串转换为Java中的对象
只需要使用fromJson方法就可以很轻松的将json字符串转换为对象,这里以上方的json字符串为例转换成Book对象
Book book = new Gson().fromJson("{\"id\":1,\"name\":\"新年快乐\",\"author\":\"张三\",\"info\":\"嘿嘿哈哈\",\"price\":18.8}", Book.class); //将json字符串转换为Book对象
System.out.println(book);
输出结果为
Book{id=1, name='新年快乐', author='张三', info='嘿嘿哈哈', price=18.8}
当然,在没有要转换的对象的时候,也可以将json字符串转换为java中的字典
(3) 将JSON格式的字符串转换为Java中的集合
json字符串是以键值对形式存储的,因此将其转换为Map
Map<String,String > map= new Gson().fromJson("{\"id\":1,\"name\":\"新年快乐\",\"author\":\"张三\",\"info\":\"嘿嘿哈哈\",\"price\":18.8}", HashMap.class);
System.out.println(map);
打印结果为
{author=张三, price=18.8, name=新年快乐, id=1.0, info=嘿嘿哈哈}
2.FastJson
(1) 将Java中的对象转换为JSON格式的字符串
使用FastJson解析json数据也很简单,将对象转换成json字符串只需要使用JSON.toJSONString()即可,其输出结果与Gson相同
String s = JSON.toJSONString(book); //将Book对象转换成json字符串
System.out.println(s);
Gson将JSON格式的字符串转换为Java中的对象和集合都使用fromJson()
而FastJson将JSON格式的字符串转换为Java中的对象使用parseObject(),转换为List集合使用parseArray()
(2) 将JSON格式的字符串转换为Java中的对象
Book book = JSON.parseObject("{\"author\":\"张三\",\"id\":1,\"info\":\"嘿嘿哈哈\",\"name\":\"新年快乐\",\"price\":18.8}", Book.class);
System.out.println(book1);
(3) 将JSON格式的字符串转换为Java中的List集合
这里以[“床前明月光”,“疑是地上霜”,“举头望明月”,“低头思故乡”]为例
String list = "[\"床前明月光\",\"疑是地上霜\",\"举头望明月\",\"低头思故乡\"]";
List<String> ls= JSON.parseArray(list, String.class); //将list字符串转换成List集合
System.out.println(ls);
打印输出
[床前明月光, 疑是地上霜, 举头望明月, 低头思故乡]