JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
JSON由两种基本结构组成:
[]
表示{}
表示{
"name": "张三",
"age": 30,
"isStudent": false,
"courses": ["数学", "英语", "计算机"],
"address": {
"street": "人民路",
"city": "北京"
},
"graduated": null
}
特性 | JSON | XML |
---|---|---|
数据体积 | 较小 | 较大 |
解析难度 | 简单 | 复杂 |
可读性 | 较好 | 一般 |
扩展性 | 较差 | 较好 |
数据类型支持 | 有限 | 丰富 |
命名空间 | 不支持 | 支持 |
// 将JavaScript对象转换为JSON字符串
const obj = {name: "李四", age: 25};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // 输出: {"name":"李四","age":25}
// 将JSON字符串转换为JavaScript对象
const jsonStr2 = '{"name":"王五","age":28}';
const obj2 = JSON.parse(jsonStr2);
console.log(obj2.name); // 输出: 王五
import json
# 将Python字典转换为JSON字符串
data = {"name": "赵六", "age": 22}
json_str = json.dumps(data)
print(json_str) # 输出: {"name": "赵六", "age": 22}
# 将JSON字符串转换为Python字典
json_str2 = '{"name": "钱七", "age": 35}'
data2 = json.loads(json_str2)
print(data2["name"]) # 输出: 钱七
import org.json.JSONObject;
// 创建JSON对象
JSONObject obj = new JSONObject();
obj.put("name", "孙八");
obj.put("age", 40);
String jsonStr = obj.toString();
System.out.println(jsonStr); // 输出: {"name":"孙八","age":40}
// 解析JSON字符串
String jsonStr2 = "{\"name\":\"周九\",\"age\":45}";
JSONObject obj2 = new JSONObject(jsonStr2);
System.out.println(obj2.getString("name")); // 输出: 周九
JSON Schema是一种用于描述和验证JSON数据结构的规范。它本身也是一个JSON文档。
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Person",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "integer",
"minimum": 0
},
"email": {
"type": "string",
"format": "email"
}
},
"required": ["name", "age"]
}
随着技术的发展,JSON的替代方案如Protocol Buffers、MessagePack等在某些场景下可能更高效,但JSON凭借其简单性和广泛的兼容性,仍将在很长一段时间内保持其主流地位。新的JSON相关标准如JSON Schema、JSONPath等也在不断发展,为JSON生态系统增添更多功能。