一、JSON 基础
JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种轻量级的数据交换格式,JSON 的设计目的是使得数据的存储和交换变得简单。
JSON 易于人的阅读和书写,同时也易于机器的解析和生成。尽管 JSON 是 JavaScript 的一个子集,但 JSON 是独立于语言的文本格式。
二、JSON 语法
JSON 语法是 JavaScript 语法的子集,JSON 数据的表示方法如下:
数据由键值对构成,键和值之间使用冒号 : 分隔,键必须使用双引号 "" 包围。每个键值对之间使用逗号 , 分隔。
大括号 { } 保存对象,方括号 [ ] 保存数组。
例始,以下是一个简单的 JSON 对象,它表示了一个人的信息,包括姓名、年龄和爱好。
{
"姓名": "小明",
"年龄": 20,
"爱好": ["阅读", "音乐", "电影"]
}
三、JSON 数据类型
JSON 支持以下数据类型:
字符串
string
由双引号包围的一串 Unicode 字符。
例如:"小明"。
数字
number
整数或浮点数。
例如:25,或者,3.14。
对象
object
无序的键值对集合。
例如:{"姓名": "小明", "年龄": 25}。
数组
array
有序的值集合。
例如:["阅读", "音乐", "电影"]。
布尔值
boolean
true 和 false。
空
null
表示空值或无值,写成 null。
对象和数组可以嵌套使用,以实现更复杂的数据结构。
{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
可以使用任意文本编辑器,根据 JSON 格式的规则,编写键值对、数组和对象等,然后将编写好的内容保存为一个以 .json 为后缀的文件。
JSON 文件编码通常使用 UTF-8。
四、JSON 数据的解释和生成
大多数编程语言都有内置函数可以将 JSON 文本转换为对应语言的数据结构。
例如,在 JavaScript 中,我们可以使用 JSON.parse() 函数将 JSON 文本转换为 JavaScript 对象。
let text = '{"name": "John", "age": 30}';
let obj = JSON.parse(text);
console.log(obj.name); // 输出 "John"
再例如,在 Python 中,我们使用 json 模块的 loads 方法将 JSON 数据解析为 Python 对象。
import json
json_string = '{"姓名": "小明", "年龄": 30}'
python_obj = json.loads(json_string)
print(python_obj["姓名"]) # 输出 "小明"
在上面这个例子中,我们将 JSON 字符串 {"姓名": "小明", "年龄": 30} 转换为了 Python 对象,并打印出了姓名的值。
与解析相反,序列化是将编程语言的数据结构转化为 JSON 文本的过程。
例如,在 JavaScript 中,我们可以使用 JSON.stringify() 函数进行序列化。
let obj = {"name": "John", "age": 30};
let text = JSON.stringify(obj);
console.log(text); // 输出 '{"name":"John","age":30}'
再例如,在 Python 中,我们可以使用 json 模块的 dumps 方法将 Python 对象转换为 JSON 字符串。
import json
python_obj = {"name": "John", "age": 30}
json_string = json.dumps(python_obj)
print(json_string) # 输出 '{"name": "John", "age": 30}'
五、JSON 文件的读写
以 Python 为例,读取和写入 JSON 文件也是通过 json 模块来实现的。
在下面例子中,我们首先打开名为 data.json 的文件,然后使用 json.load( ) 函数将 JSON 文件的内容转换为 Python 对象。json.load( ) 函数的参数是一个文件对象,它将从这个文件对象中读取 JSON 数据并返回对应的 Python 对象。
import json
# 打开文件并加载为 Python 对象
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
在下面例子中,我们首先创建了一个 Python 对象 data,然后使用 json.dump( ) 函数将这个 Python 对象转换为 JSON 数据并写入 output.json 文件。
import json
data = {
"姓名": "小明",
"年龄": 30,
"爱好": ["阅读", "音乐", "电影"]
}
# 将 Python 对象转换为 JSON 格式,并写入文件
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
上面例子中,json.dump( ) 函数的第一个参数是要转换的 Python 对象,第二个参数是一个文件对象,它将把转换得到的 JSON 数据写入这个文件对象。ensure_ascii=False 参数使得中文字符能正确地被写入,indent=4 参数表示在输出的 JSON 数据中,使用 4 个空格缩进。
“点赞有美意,赞赏是鼓励”