JSON 概述
在 Python 中,我们可以将程序中的数据以 JSON 格式进行保存。JSON 是“JavaScript Object Notation”的缩写,它本来是 JavaScript 语言中创建对象的一种字面量语法,现在已经被广泛的应用于跨语言跨平台的数据交换。使用 JSON 的原因非常简单,因为它结构紧凑而且是纯文本,任何操作系统和编程语言都能处理纯文本,这就是实现跨语言跨平台数据交换的前提条件。
{
name: "Stan",
age: 20,
hobbies: ["running", "swim"],
teachers: [
{
name: 'Tony',
age: 31,
}
]
}
表 1:JavaScript 数据类型(值)对应的 Python 数据类型(值)
JSON | Python |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表 2:Python 数据类型(值)对应的 JavaScript 数据类型(值)
Python | JSON |
|
|
|
|
|
|
|
|
|
|
|
|
在 Python 中,如果要将字典处理成 JSON 格式(以字符串形式存在),可以使用json
模块的dumps
函数,代码如下所示。
json
模块有四个比较重要的函数,分别是:
dump
- 将 Python 对象按照 JSON 格式序列化到文件中dumps
- 将 Python 对象处理成 JSON 格式的字符串load
- 将文件中的 JSON 数据反序列化成对象loads
- 将字符串的内容反序列化成 Python 对象
将对象转成 JSON 字符串
import json
my_dict = {
'name': "Stan",
'age': 20,
'hobbies': ["running", "swim"],
'teachers': [
{
'name': '张老师',
'age': 31,
}
]
}
# {"name": "Stan", "age": 20, "hobbies": ["running", "swim"], "teachers": [{"name": "\u5f20\u8001\u5e08", "age": 31}]}
print(json.dumps(my_dict))
# {"name": "Stan", "age": 20, "hobbies": ["running", "swim"], "teachers": [{"name": "张老师", "age": 31}]}
print(json.dumps(my_dict, ensure_ascii=False))
如果数据中有中文,需要在 dumps 函数中指定
ensure_ascii=False
,不然输出的中文会被 unicode 字符编码代替。
将 JSON 字符串转成对象
import json
my_dict_str = '{"name": "Stan", "age": 20, "hobbies": ["running", "swim"], "teachers": [{"name": "张老师", "age": 31}]}'
try:
my_dict = json.loads(my_dict_str) # 字符串不一定是 JSON 格式,所以这次转换是有可能出错的,我们需要异常捕获
print(my_dict['name']) # Stan
except Exception as e:
print(e)
JSON 和文件读写操作
import json
my_dict = {
'name': "Stan",
'age': 20,
'hobbies': ["running", "swim"],
'teachers': [
{
'name': '张老师',
'age': 31,
}
]
}
# 序列化
with open('data.json', 'w') as file:
json.dump(my_dict, file)
# 反序列化
with open('data.json', 'r') as file:
my_dict_2 = json.load(file)
print(type(my_dict_2)) #<class 'dict'>
print(my_dict_2['name']) # Stan
标签:name,Python,age,二十一,JSON,json,dict,序列化,my
From: https://blog.51cto.com/u_16181955/6966208