Gson
GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。
特点:
1.快速、高效
2.代码量少、简洁
3.面向对象
4.数据传递和解析方便
Gson的下载
1.首先百度Gson进入GitHub页面。
2.下拉至Download界面点击下载。
3.进入下载页面后,点击右上角Downloads中的jar即可进行下载。
Gson的使用
将对象转换为JSON字符串
转换JSON字符串的步骤:
- 引入JAR包
- 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
将JSON字符串转换为对象
- 引入JAR包
- 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例1:将对象转换为JSON字符串
Book book = new Book(1001,"金苹果","种苹果");
//1. 创建GSon对象
Gson g = new Gson();
//2. 转换
String s = g.toJson(book);
System.out.println(s);
运行结果:
案例2:将JSON字符串转换为对象
//1. 创建GSon对象
Gson g = new Gson();
//2. 转换{"id":1001,"name":"金苹果","info":"种苹果"}
Book book = g.fromJson("{\"id\":1001,\"name\":\"金苹果\",\"info\":\"种苹果\"}", Book.class);
System.out.println(book.getId());
运行结果:
案例3:将包含数组的JSON字符串转换为HashMap对象
//1. 创建GSon对象
Gson g = new Gson();
//2. 转换{"id":1001,"name":"金苹果","info":"种苹果","page":["你好","我好","大家好"]}
HashMap hashMap = g.fromJson("{\"id\":1001,\"name\":\"金苹果\",\"info\":\"种苹果\",\"page\":[\"你好\",\"我好\",\"大家好\"]}", HashMap.class);
System.out.println(hashMap.get("page").getClass());
运行结果:
由此可知,当JSON的值为数组的时候,当转为HashMap对象时就会以ArrayList的形式进行存储。
Fastjson
FastJson是阿里巴巴出品的一个json序列化工具,可以将一个Json字符转成一个Java对象或数组,或者将一个Java转化为Json字符串。
Fastjson的下载
1.首先百度Fastjson进入GitHub页面。
2.下拉至Download界面点击下载即可直接进行下载。
Fastjson的使用
将对象转换为JSON字符串
转换JSON字符串的步骤:
- 引入JAR包
- 在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
将JSON字符串转换为对象
- 引入JAR包
- 在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
案例1:将对象转换为JSON字符串
Book book = new Book(1002,"银苹果","哈哈");
//1. 转换
String s = JSON.toJSONString(book);
System.out.println(s);
运行结果:
案例2:将JSON字符串转换为对象
//1. 转换{"id":1002,"info":"哈哈","name":"银苹果"}为对象
Book book = JSON.parseObject("{\"id\":1002,\"info\":\"哈哈\",\"name\":\"银苹果\"}", Book.class);
System.out.println(book.getId());
//2. 转换["你好","我好","大家好"]为数组
List<String> strings = JSON.parseArray("[\"你好\",\"我好\",\"大家好\"]", String.class);
System.out.println(strings.get(1));
运行结果:
注意:如果JSON的属性对象中没有的话会造成数据丢失。