JSON解析基础使用知识
JSON格式
假设我们定义一本书
一本书有他的书名和内容,那么JSON数据如下
{
"name":"诗经",
"info":"中国古代诗歌开端,最早的一部诗歌总集"
}
- 一个对象由一个大括号表示,括号中通过键值对的方式来描述对象的属性。
- 键值之间使用冒号连接、多个键值对之间使用逗号分隔,
- 键值对的键应使用引号包含(如果不使用引号,Java解析时通常会报错,但JS不会)
- 键值对的值可以是JS中任意类型数据
Gson
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
1、先创建一个类
构造方法、toString()、get()、set()等省略,免得太长
public class Book {
//基本信息
private String id;
private String name;
private String info;
}
2、将类转换为JSON格式
public class Demo1 {
public static void main(String[] args) {
//1. 创建一个Gson对象
Gson g = new Gson();
//2. 创建一个Book对象
Book b = new Book("99","诗经","中国古代诗歌开端");
//3. 通过toJson方法转换
String s = g.toJson(b);
//4. 输出验证
System.out.println(s);
Book b1 = new Book("100","聊斋","蒲松龄创作的文言短篇小说集");
String s1 = new Gson().toJson(b1);
System.out.println(s1);
}
}
输出得到结果
3、将JSON格式转换为Book对象
public class Demo3 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 通过fromJson方法将目标JSON格式字符串转换为Book对象
Book b = g.fromJson("{\"id\":\"99\",\"name\":\"诗经\",\"info\":\"中国古代诗歌开端\"}",Book.class);
Book b1 = g.fromJson("{\"id\":\"100\",\"name\":\"聊斋\",\"info\":\"蒲松龄创作的文言短篇小说集\"}",Book.class);
//3. 输出诗经id,聊斋名字验证
System.out.println(b.getId());
System.out.println(b1.getName());
}
}
输出得到结果
4、将JSON转换为Map
public class Demo2 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换 : {"id":"100","name":"诗经","info":"中国古代诗歌开端","page":["如月之恒","如日之升"]}
//以HashMap为对象
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"诗经\",\"info\":\"中国古代诗歌开端\",\"page\":[\"如月之恒\",\"如日之升\"]}", HashMap.class);
//3. 用list集合接收page
List page = (List) data.get("page");
//4. 输出验证
System.out.println(page.get(1));
}
}
输出的结果
FastJson
还是使用上面创建的Book对象
1、将类转换为JSON格式
public class Demo2 {
public static void main(String[] args) {
Book book = new Book("98","兰亭集序","流觞曲水,列坐其次");
//1. 导入com.alibaba.fastjson.JSON后转换直接使用其中的toJSONString方法
String s = JSON.toJSONString(book);
//2. 输出验证
System.out.println(s);
}
}
输出得到结果
2、将JSON格式转换为Book对象
public class Demo2 {
public static void main(String[] args) {
//通过parseObject方法直接转换成Book
Book book = JSON.parseObject("{\"id\":\"98\",\"info\":\"流觞曲水,列坐其次\",\"name\":\"兰亭集序\"}",Book.class);
System.out.println(book.getId());
}
}
输出结果验证
3、将JSON转换为数组
public class Demo4 {
public static void main(String[] args) {
//1. 转换数组:["流觞曲水","列坐其次","兰亭集序"]
List<String> strings = JSON.parseArray("[\"流觞曲水\",\"列坐其次\",\"兰亭集序\"]", String.class);
System.out.println(strings.get(0));
}
}
输出验证
谢谢你的观看