1. Python数据结构转换为JSON对象
json
模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps()
和 json.loads()
, 要比其他序列化函数库如pickle的接口少得多。 下面演示如何将一个Python数据结构转换为JSON对象:
import json
data = {
'name' : 'ACME',
'shares' : 100,
'price' : 542.23
}
json_str = json.dumps(data)
下面演示如何将一个JSON编码的字符串转换回一个Python数据结构:
data = json.loads(json_str)
JSON编码支持的基本数据类型为None
,bool
,int
,float
和str
, 以及包含这些类型数据的list
,tuple
和dictionary
。 对于dictionary
,keys需要是字符串类型(字典中任何非字符串类型的key在编码时会先转换为字符串)。 为了遵循JSON规范,你应该只编码Python的list
和dictionary
。
2. JSON文件读写
如果你要处理的是文件而不是字符串,你可以使用另外的json.dump()
和json.load()
函数来编码和解码JSON数据。例如:
# Writing JSON data
with open('data.json', 'w') as f:
json.dump(data, f)
# Reading data back
with open('data.json', 'r') as f:
data = json.load(f)
注意此处open()
函数中读写模式的实参:在编码JSON数据时使用'w'
写入模式,解码JSON数据时使用'r'
只读模式。使用错误的写入模式(如'a'
附加模式)会导致写入文件的JSON数据格式出现错误。此外注意写入与读取JSON文件的步骤(上下文管理器)应该分开。
参考来源
[1] Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly). Copyright 2013 David Beazley and Brian Jones, 978-1-449-34037-7
[2] python3-cookbook中文译本,译者熊能,网址链接:http://python3-cookbook.readthedocs.io/zh_CN/latest/c06/p02_read-write_json_data.html