📅  最后修改于: 2023-12-03 15:17:04.718000             🧑  作者: Mango
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写。它基于JavaScript语法的一个子集,但也可用于 Python、Java、PHP 等多种编程语言。
JSON 数据由键值对组成,键值对之间使用逗号 "," 进行分割,整个数据使用花括号 "{}" 包围。例如:
{"name": "John Smith", "age": 35, "city": "New York"}
其中,每个键值对由冒号 ":" 分隔,键名是字符串,值可以是字符串、数字、布尔、数组、对象,甚至是null。例如:
{
"name": "Tom",
"age": 25,
"isMale": true,
"interests": ["music", "movies"],
"address": {
"street": "123 Main St",
"city": "San Francisco",
"zip": "94101"
},
"scores": [
{
"subject": "Math",
"value": 90
},
{
"subject": "History",
"value": 80
}
],
"profileImage": null
}
其中,键名 "name" 对应字符串值 "Tom",键名 "age" 对应数字值 25,"isMale" 对应布尔值 true,"interests" 对应数组,"address" 对应嵌套对象,"scores" 对应一个由嵌套对象构成的数组,"profileImage" 对应null。
由于 JSON 与多种编程语言都兼容,因此通常需要解析和生成 JSON 数据。这一过程称为序列化和反序列化。
在 Python 中,可以使用 json 模块进行 JSON 数据的序列化和反序列化。例如:
import json
# 将 Python 字典序列化为 JSON 字符串
data = {"name": "Tom", "age": 25}
json_string = json.dumps(data)
# 将 JSON 字符串反序列化为 Python 字典
data = json.loads(json_string)
在 JavaScript 中,可以使用 JSON 对象的 stringify 和 parse 方法进行序列化和反序列化。例如:
// 将 JavaScript 对象序列化为 JSON 字符串
var data = {name: "Tom", age: 25};
var json_string = JSON.stringify(data);
// 将 JSON 字符串反序列化为 JavaScript 对象
var data = JSON.parse(json_string);
JSON Schema 是一种用于描述 JSON 数据结构及其约束的语言。它可以用于验证 JSON 数据是否符合特定的格式要求,从而提升数据的可靠性和互操作性。
JSON Schema 的语法与 JSON 类似,可以通过关键字来描述数据结构、类型、格式、条件等。例如:
{
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer", "minimum": 0}},
"required": ["name", "age"]
}
其中,关键字 "type" 表示数据类型,关键字 "properties" 表示对象属性,关键字 "required" 表示必填属性。这个 JSON Schema 描述了一个包含 "name" 和 "age" 两个属性的对象,其中 "name" 属性必须是字符串,"age" 属性必须是非负整数。
可以使用各种编程语言的 JSON Schema 解析库来验证 JSON 数据是否符合特定的 Schema。例如,在 Python 中可以使用 fastjsonschema 库进行验证:
import fastjsonschema
schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer", "minimum": 0}},
"required": ["name", "age"]
}
validate = fastjsonschema.compile(schema)
data = {"name": "Tom", "age": -1}
try:
validate(data)
except fastjsonschema.JsonSchemaException as e:
print("Validation error: " + str(e))
JSON 是一种简单、通用、轻量、易于生成和解析的数据格式,可用于多种编程语言之间的数据交换。JSON 数据由键值对组成,键名是字符串,值可以是字符串、数字、布尔、数组、对象,甚至是null。JSON Schema 是一种用于描述 JSON 数据结构及其约束的语言,可以用于验证 JSON 数据的格式和完整性。