JSON是什么?JSON的简单介绍及使用
一、JSON介绍
JSON(JavaScript Object Notation)是一种数据结构,当我们需要在不同的应用程序之间传递数据时,我们需要一种通用的格式来表示数据。
相比xml交换格式来说,因为解析xml比较的复杂且需要编写大段的代码,而 JSON 数据更小,也更容易解析。
1、JSON基本语法
JSON 数据与JAVA中的 Map 集合类型一样,都是由 key : value
组成,键和值之间使用 :
分割,多个键值对使用 ,
分割。
下面是一个标准的JSON数据结构:
{
"name": "John",
"age": 30,
"city": "New York"
}
2、JSON数据类型
我们的 JSON 数据类型分为 JSON 对象 和 JSON 数组 这两种类型,可以根据下面的这个 JSON 数据看一下。
{
"name": "John Smith",
"age": 30,
"isMarried": false,
"hobbies": ["reading", "traveling"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
}
}
2.1、JSON对象
使用 { }
花括号表示是一个 JSON 对象,每个键必须是一个字符串,每个值可以是一个字符串、数字、布尔值、null、数组或对象。
在这个JSON数据中,整个数据可以看成一个 JSON 对象,花括号下的数据都是这个JSON对象的属性。
2.2、JSON数组
使用 [ ]
分括号表示这是一个JSON数组,一个数组可以包含多个值,也可以包含多个对象。
二、JSON数据处理
JSON 数据结构是一种轻量级的数据交换格式,具有语法简单、易于阅读和编写、容易解析和生成等特点,因此在 Web 开发、API 开发、移动应用开发等领域得到了广泛的应用。
1、JSON处理常用框架
- FastJson:FastJSON是阿里开发的处理JSON数据框架,以性能著称,API使用也较为方便。
- Jackson:一个流行的JSON处理框架,可以用于序列化和反序列化Java对象和JSON数据。SpringMVC中使用的默认解析器就是使用的Jackson。
- Gson:Google开发的JSON处理库,可以将Java对象转换为JSON字符串,并将JSON字符串转换为Java对象,也是目前功能最全的Json解析神器。
2、FastJson使用
2.1 引入依赖
<!-- fastjson -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.33</version>
</dependency>
2.2 API使用
分为 JSONObject
和 JSONArray
两个类,都可以使用 toJSONString() 和 parseObject() 方法来将 Java 对象转换为 JSON,反之亦然。
我这使用的是最新的2.0版本,如果是 1.0+ 版本的话有些 API会有些许变化。
- JSONObject
Student student = Student.builder()
.sno(1)
.sname("小李")
.age(19)
.clazz("1001")
.subject(new String[]{"语文","数学","英语"})
.build();
// 转为JSON对象
JSONObject object = JSONObject.from(student);
// java 对象 转为Json字符串
String jsonString = JSONObject.toJSONString(student);
System.out.println(jsonString);
// json 转为java对象
Student student1 = JSONObject.parseObject(jsonString, Student.class);
System.out.println(student1);
- JSONArray
// 转为JSON数组
JSONArray jsonArray = JSONArray.from(student.getSubject());
// 将数组或集合转为JSON字符串
String jsonArrayString = JSONArray.toJSONString(student.getSubject());
System.out.println(jsonArrayString);
// 将数组或集合转为集合
List<String> parseArray = JSONArray.parseArray(jsonArrayString, String.class);
System.out.println(parseArray);
3、Gson使用
3.1 引入依赖
<!-- gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
3.2 API使用
使用的对象和结果与上面的一致。
Gson gson = new Gson();
// 将对象转为 json 字符串
String json = gson.toJson(student);
System.out.println(json);
// 将数组转为 json 字符串
String toJson = gson.toJson(student.getSubject());
System.out.println(toJson);
// 将 json 转为对象
Student student1 = gson.fromJson(json, Student.class);
System.out.println(student1);
4、Jackson使用
4.1 引入依赖
<!-- jsckson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
4.2 API使用
ObjectMapper objectMapper = new ObjectMapper();
// 将对象转为 json 字符串
String valueAsString = objectMapper.writeValueAsString(student);
// 将对象转为 json 字符串
String valueArray = objectMapper.writeValueAsString(student.getSubject());
System.out.println(valueAsString);
// 将 json 转为对象
Student student1 = objectMapper.readValue(valueAsString, Student.class);
System.out.println(student1);