Python 的 json 模块处理了 JSON 数据字符串和 Python 值之间转换的所有细节,得到了 json.loads()和 json.dumps()函数。 JSON 不能存储每一种 Python 值,它只能包含以下数据类型的值:字符串、整型、浮点型、布尔型、列表、字典和 NoneType。JSON 不能表示 Python 特有的对象,如 File 对象、 CSV Reader 或 Writer 对象、 Regex对象或 Selenium WebElement 对象。
用 loads()函数读取 JSON
要将包含 JSON 数据的字符串转换为 Python 的值,就将它传递给 json.loads()函数(这个名字的意思是“load string”,而不 是“loads”)。在交互式环境中输入以下代码:
>>> stringOfJsonData = '{"name": "Zophie", "isCat": true, "miceCaught": 0,
"felineIQ": null}'
>>> import json
>>> jsonDataAsPythonValue = json.loads(stringOfJsonData)
>>> jsonDataAsPythonValue
{'isCat': True, 'miceCaught': 0, 'name': 'Zophie', 'felineIQ': None}
导入 json 模块后,就可以调用 loads(),向它传入一个 JSON 数据字符串。 请注意, JSON 字符串总是用双引号。它将该数据返回为一个 Python 字典。 Python 字典是没有顺序的,所以如果打印 jsonDataAsPythonValue,键-值对可能以不同的顺序出现。
用 dumps 函数写出 JSON
json.dumps()函数(它表示“dump string”,而不是 “dumps”)将一个 Python 值转换成 JSON 格式的数据字符串。在交互式环境中输入以下代码:
>>> pythonValue = {'isCat': True, 'miceCaught': 0, 'name': 'Zophie',
'felineIQ': None}
>>> import json
>>> stringOfJsonData = json.dumps(pythonValue)
>>> stringOfJsonData
'{"isCat": true, "felineIQ": null, "miceCaught": 0, "name": "Zophie" }'
该值只能是以下基本 Python 数据类型之一:字典、列表、整型、浮点型、字符串、布尔型或 None。