说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
JSON(JavaScript 对象表示法)由 RFC 7159 和 ECMA-404 规范,一种受 JavaScript 对象文字语法启发的轻量级数据交换格式(尽管它不是 JavaScript 1 的严格子集)。Python 的内置模块 json 提供了与标准库 marshal 和 pickle 相似的API接口。
JSON((JavaScript Object Notation,JavaScript对象表示法)是一种流行的数据格式,用于表示结构化数据。在服务器和 web 应用程序之间以 JSON 格式传输和接收数据是很常见的。
在Python中,JSON 作为字符串存在,在文件中存储 JSON 对象也是很常见的。以下是将 json 转为 Python 对象的方法:
import json
# JSON 字符串
person = '{"name": "Bob", "languages": ["English", "Fench"]}'
# loads 返回字符串
person_dict = json.loads(person)
person_dict
{'name': 'Bob', 'languages': ['English', 'Fench']}
person_dict['languages']
# ['English', 'French']
可以使用 json 方法读取包含 JSON 对象的文件。假设您有一个名为person的文件。包含json对象的json。
# 文件内容
{"name": "Bob",
"languages": ["English", "Fench"]
}
# 解析此文件
import json
with open('path_to_file/person.json') as f:
data = json.load(f)
data
# {'name': 'Bob', 'languages': ['English', 'Fench']}
这里,我们使用 open 函数读取json文件,然后,使用 load 方法解析 json 文件,最后返回了一个名为 data 的字典。
将字典转换为 JSON 字符串:
import json
person_dict = {'name': 'Bob','age': 12, 'children': None}
person_json = json.dumps(person_dict)
person_json
# '{"name": "Bob", "age": 12, "children": null}'
将 JSON 写入文件:
import json
person_dict = {"name": "Bob",
"languages": ["English", "Fench"],
"married": True,
"age": 32
}
with open('person.txt', 'w') as json_file:
json.dump(person_dict, json_file)
# person.txt
{"name": "Bob", "languages": ["English", "Fench"], "married": true, "age": 32}
在上面的程序中,我们打开了一个名为 person 的文件。在写入模式下使用“w” 写入 person.txt。如果该 txt 文件不存在,将创建它。然后是 json.dump() 将 person_dict 转换为JSON字符串,该字符串将保存在 person 中。
Python 友好地打印 JSON:
import json
person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'
# 获取字典
person_dict = json.loads(person_string)
# 漂亮地将 JSON 字符串打印出来
print(json.dumps(person_dict, indent = 4, sort_keys=True))
'''
{
"languages": "English",
"name": "Bob",
"numbers": [
2,
1.6,
null
]
}
'''
在上面的程序中,我们使用了 4 个空格进行缩进。并且,键按升序排序。其中,indent 的默认值是 None。并且,sort_keys 的默认值为 False。
首先要弄明白json库的四个方法:dumps和loads、dump和load。其中,dumps和loads是在内存中转换(python对象和json字符串之间的转换),而dump和load则是对应于文件的处理。
说明:
下面的表格显示了 Python 对象及其到 JSON 的等效转换:
Python | JSON Equivalent |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
更新时间:2022-03-06 03:18:03 标签:python json 编码