json教程
json是什么?
JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式,在 Web 开发领域有着举足轻重的地位,如果您想在 Web 开发领域大展身手的话,就必须了解 JSON。
JSON 是最受欢迎的、使用最广泛的数据交换格式之一,主要用来在网络中传输数据。
数据交换是指,两个设备之间建立连接并互相传递数据的过程。
JSON 是一种纯字符串形式的数据,它本身不提供任何方法(函数),非常适合在网络中进行传输。JavaScript、PHP、Java、Python、C++ 等编程语言中都内置了处理 JSON 数据的方法。
JSON 是基于 JavaScript的一个子集,是一种开放的、轻量级的数据交换格式,采用独立于编程语言的文本格式来存储和表示数据,易于程序员阅读与编写,同时也易于计算机解析和生成,通常用于在 Web 客户端(浏览器)与 Web 服务器端之间传递数据。
在 JSON 中,使用以下两种方式来表示数据:
- Object(对象):键/值对(名称/值)的集合,使用花括号
{ }
定义。在每个键/值对中,以键开头,后跟一个冒号:
,最后是值。多个键/值对之间使用逗号,
分隔,例如{"name":"C语言","url":"http://c"}
; - Array(数组):值的有序集合,使用方括号
[ ]
定义,数组中每个值之间使用逗号,
进行分隔。
{
"Name":"C语言",
"Url":"http://c/",
"Tutorial":"JSON",
"Article":[
"JSON 是什么?",
"JSONP 是什么?",
"JSON 语法规则"
]
}
为什么使用json?
JSON 并不是唯一能够实现在互联网中传输数据的方式,除此之外还有一种 XML 格式。
JSON 比 XML 的可读性更高,而且 JSON 更加简洁,更容易理解。
与 XML 相比,JSON 具有以下优点:
- 结构简单、紧凑:与 XML 相比,JSON 遵循简单、紧凑的风格,有利于程序员编辑和阅读,而 XML 相对比较复杂;
- 更快:JSON 的解析速度比 XML 更快(因为 XML 与 HTML 很像,在解析大型 XML 文件时需要消耗额外的内存),存储同样的数据,JSON 格式所占的存储空间更小;
- 可读性高:JSON 的结构有利于程序员阅读。
json的不足:
- 只有一种数字类型:JSON 中只支持 IEEE-754 双精度浮点格式,因此您无法使用 JSON 来存储许多编程语言中多样化的数字类型;
- 没有日期类型:在 JSON 中您只能通过日期的字符串(例如:1970-01-01)或者时间戳(例如:1632366361)来表示日期;
- 没有注释:在 JSON 中无法添加注释;
- 冗长:虽然 JSON 比 XML 更加简洁,但它并不是最简洁的数据交换格式,对于数据量庞大或用途特殊的服务,您需要使用更加高效的数据格式。
JSON 数据可以存储在 .json 格式的文件中(与 .txt 格式类似,都属于纯文本文件),也可以将 JSON 数据以字符串的形式存储在数据库、Cookie、Session 中。
什么时候会使用json:
- 定义接口;
- 序列化;
- 生成tocken;
- 配置文件;
jsonp是什么?
所谓同源是指域名、协议、端口都相同。
通过 JSONP,您可以避开浏览器的同源策略,进行跨域请求。JSONP 是利用 HTML 标签的 src 属性引用资源不受同源策影响的特性来实现的,实现步骤如下:
-
在请求地址中拼接一个回调函数,得到一个新的地址,将这个新地址赋值给
JSON 中的值可以是以下数据类型:
- 数字(整数或浮点数);
- 字符串(需要在双引号中定义);
- 布尔值(true 或 false);
- 数组(在方括号中定义);
- 对象(在花括号中定义);
- null(空)。
json支持的数据类型:
简单数据类型:string(字符串)、number(数字)、boolean(布尔值)和 null(空);
复杂数据类型:Array(数组)和 Object(对象)。
在 JSON 中使用对象类型时,有以下几点需要注意:
- 对象必须包裹在花括号
{ }
中; - 对象中的内容需要以键/值对的形式编写;
- 键必须是字符串类型,即使用双引号
" "
将键包裹起来; - 值可以是任意 JSON 中支持的数据类型(例如字符串、数字、对象、数组、布尔值、null 等);
- 键和值之间使用冒号进行分隔;
- 不同键/值对之间使用逗号进行分隔;
- 对象中的最后一个键/值对末尾不需要添加逗号。
{
"website": {
"name" : "C语言",
"url" : "http://c.bian/"
}
}
另外,JSON 对象中可以嵌套其它的任意类型,例如对象、数组等,如下例所示:
// 键/值对中,键必须使用双引号定义,值若是字符串类型也必须使用双引号定义
{
"name": "C语言中",
"age": 18,
"url": "http://c.bian/",
"course": {
"title": "JSON教程",
"list": [
"JSON是什么?",
"JSON语法规则",
"JSON数据类型" // 这个地方不能添加逗号,因为它是数组中最后一个值
] // 这个地方也不能添加逗号,因为它是对象中最后一个键/值对
} // 这个地方也不可以有逗号,因为它也是对象的最后一个键/值对
}
数组是值的有序集合,需要使用方括号[ ]
定义,方括号中为数组中的若干值,值可以是 JSON 中支持的任意类型(例如字符串、数字、布尔值、对象、数组等),每个值之间使用逗号,
分隔开,具体语法格式如下:
{
"array":[
{
"name":"C语言",
"url":"http://c.bian/",
"course":"JSON教程"
},
[
"JSON是什么?",
"JSON语法规则",
"JSON数据类型"
],
"JSON",
18,
true
]
}
在 JSON 中使用数组时,有以下几点需要注意:
- 数组必须使用方括号
[ ]
定义; - 数组的内容由若干值组成;
- 每个值之间需要使用逗号
,
进行分隔; - 最后一个值末尾不需要添加逗号;
- 数组中的值可以是 JSON 中的任何类型,例如字符串、数字、对象、数组、布尔值、null 等。
不允许添加注释,是因为 JSON 主要是用来存储数据的,过多的注释会对数据的可读性造成影响,同时也会造成数据体积变大,进而影响数据传输、解析的速度。
JSON Schema是什么?
JSON Schema 是一个描述和验证 JSON 数据结构的强大工具,我们可以把 JSON Schema 看作是一种规范,这个规范中规定了 JSON 数据的结构、键的命名、值的类型等等,通过规范可以校验指定的 JSON 数据,保证数据的准确。
JSON 与 XML 之间的差异
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZrb1gui-1649339661823)(C:\Users\swl\AppData\Roaming\Typora\typora-user-images\image-20220407215301628.png)]
数据结构的强大工具,我们可以把 JSON Schema 看作是一种规范,这个规范中规定了 JSON 数据的结构、键的命名、值的类型等等,通过规范可以校验指定的 JSON 数据,保证数据的准确。