JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,不仅在JavaScript中广泛应用,也被许多其他编程语言所支持。它具有语法简单、易于解析和生成、可读性强等特点,逐渐成为Web开发中常用的数据交换格式之一。本文将从多个方面详细解释JSON文件格式规范,帮助读者更好地了解和使用JSON。
一、语法规范
JSON文件由一些列名值对(key-value pairs)组成。每个名值对之间用逗号(,)分隔,整个文件需要用花括号({})包裹。如下是一个简单的JSON文件示例:
{
"name": "Tom",
"age": 18,
"gender": "male"
}
在JSON文件中,key通常是字符串类型,需要用双引号(”)表示;value可以是字符串、数字、布尔值、数组、对象等类型。数组需要用方括号([])包裹,每个元素用逗号(,)分隔;对象同样需要用花括号({})包裹,每个名值对用逗号(,)分隔。示例如下:
{
"name": "Tom",
"age": 18,
"gender": "male",
"scores": [90, 85, 95],
"info": {
"school": "ABC University",
"major": "Computer Science"
}
}
另外,在JSON文件中,可以使用空白符(空格、制表符、换行符等)来增加代码的可读性。JSON解析器不会对空白符做任何处理。
二、数据类型
JSON文件支持6种数据类型,分别为:
1. 字符串(string):表示文本字符序列,需要用双引号(”)表示。
"user": "Tom"
2. 数字(number):表示数值,包括整数和浮点数。
"age": 18, "score": 98.5
3. 布尔值(boolean):表示真或假,只有两个值:true和false。
"male": true
4. null:表示空值。
"address": null
5. 数组(array):表示一组有序的值,需要用方括号([])包裹,每个元素之间用逗号(,)分隔。
"scores": [90, 85, 95]
6. 对象(object):表示一组无序的键值对集合,需要用花括号({})包裹,每个键值对之间用逗号(,)分隔。
"info": {
"school": "ABC University",
"major": "Computer Science"
}
三、转义字符
在字符串值中,如果要出现特殊字符(如双引号、反斜杠等),需要使用转义字符(反斜杠 \)对其进行转义。
"message": "I am a \"good\" student."
下表列出了JSON文件中常见的转义字符:
| 转义字符 | 含义 |
|---|---|
| \\ | 转义为反斜杠 |
| \” | 转义为双引号 |
| \/ | 转义为斜杠 |
| \b | 转义为退格符 |
| \f | 转义为换页符 |
| \n | 转义为换行符 |
| \r | 转义为回车符 |
| \t | 转义为制表符 |
四、JSONP
JSONP(JSON with Padding)是一种跨域数据交互技术,用于解决浏览器跨域访问数据的问题。JSONP的原理是通过动态创建script标签,实现跨域请求数据,并通过回调函数的方式解析返回的数据。JSONP的使用需要配合服务端进行处理。
下面是一个JSONP请求的示例:
<script>
function requestData(data) {
console.log(data);
}
var script = document.createElement('script');
script.src = 'http://example.com/api?callback=requestData';
document.body.appendChild(script);
</script>
以上代码可以实现通过JSONP方式请求example.com接口,返回数据后调用requestData函数进行处理。
五、JSON Schema
JSON Schema是一种用于验证和描述JSON文件的规范。它可以用于定义JSON文件的结构,验证JSON文件是否符合规范等。
下面是一个JSON Schema的示例:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "User",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"gender": {
"type": "string",
"enum": ["male", "female"]
},
"scores": {
"type": "array",
"items": {
"type": "integer"
}
},
"info": {
"type": "object",
"properties": {
"school": {
"type": "string"
},
"major": {
"type": "string"
}
}
}
},
"required": ["name", "age"]
}
以上JSON Schema定义了一个”User”对象,包含”name”、”age”、”gender”、”scores”和”info”等字段。其中,”name”和”age”是必填项,”gender”只能取”male”或”female”两个值,”scores”是一个整数数组,”info”是一个对象,其中包含”school”和”major”两个字段。通过JSON Schema,可以方便地验证JSON文件是否符合要求。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/187720.html
微信扫一扫
支付宝扫一扫