一 JSON
1 定义
JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的 JS 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2 格式
JSON 就是一种有格式的字符串。任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
规则如下:
- 映射用冒号(“:”)表示。”名称” : 值,标准格式名称用双引号括起来;
- 并列的数据之间用逗号(“,”)分隔。”名称1” : 值1, ”名称2” : 值2;
- 映射的集合(对象)用大括号(“{
}”)表示。{
”名称1” : 值1, ”名称2”: 值2}
- 并列数据的集合(数组)用方括号(“[]”)表示。示例如下:
[
{
”名称1” : 值, ”名称2” : 值2},
{
”名称1” : 值, ”名称2” : 值2}
]
- 元素值可具有的类型:string,number,object,array,true,false,null。
3 JavaScript 中的 JSON
① 表示 JSON
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>json语法</title>
</head>
<body>
<script>
//json字符串
var json01="\"name\":lisi";
console.log(json01)
//json对象
var json02={
"name":"lisi","age":23};
console.log(json02)
//json数组
var json03=[
{
"name":"lisi","age":23},
{
"name":"zhangsan","age":23}
];
console.log(json03)
</script>
</body>
</html>
② JSON 与 JS 对象转换
浏览器环境提供一个工具类名叫JSON,里面提供方法帮我们实现 JSON 与 JS 对象之间的转换。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>json语法</title>
</head>
<body>
<script>
/*
* json对象转字符串:
* JSON.stringify()
* json字符转转对象:
* JSON.parse()
* */
//json对象
var jsonObj={
"name":"lisi","age":23};
var str= JSON.stringify(jsonObj);
console.log(str)
//json对象字符串
var jsonStr="{\"name\":\"lisi\",\"age\":23}";
var obj = JSON.parse(jsonStr);
console.log(obj)
</script>
</body>
</html>
二 Java 中的 JSON
1 表示 JSON
新建一个测试类于 Java 中表示 JSON
package cn.tj.json;
public class JsonTest {
/*json格式*/
@Test
public void json_str() {
/*基本json数据:
* {"name":"李四","age":23,
* {"dept":"开发部"}
* }
* */
String s = "{\"name\":\"李四\",\"age\":23}";
System.out.println(s);
}
}
2 JSON 与 Java 对象转换
开发中一般都会使用第三方的一些 JSON 操作的依赖或者 JAR 包来来完成 Java 对象与 JSON 字符串之间的转换,其中主要方法需通过ObjectMapper对象进行调用。在 Java 中,转换 JSON 的依赖或者 JAR 有很多,如:
- Jackson:在 Spring MVC 中内置支持(需要导入依赖才能使用),速度也挺快,稳定性较好
- Fastjson:阿里出品,号称是 Java 领域中转换 JSON 最快的一个插件,中文文档较齐全
3 Jackson – ObjectMapper对象
① 添加依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.5</version>
<</