JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它具有简洁、清晰的层次结构,易于阅读和编写,还可以有效的提升网络传输效率。Python标准库的json模块可以用来处理JSON格式数据的基本操作。
2.使用json模块主要提供了dump、dumps、load、loads方法对JSON数据进行编解码。
2.1dumps
json模块的dumps方法可以将Python对象转为JSON格式字符串,以字典格式为例,看个示例:
importjson
d={'id':'001','name':'张三','age':'20'}
j=json.dumps(d,ensure_ascii=False)
print(j)
执行结果:
{"id":"001","name":"张三","age":"20"}
我们发现上面的输出结果并不是格式化的JSON,dumps方法还可以对数据进行格式化,如下所示:
importjson
d={'id':'001','name':'张三','age':'20'}
j=json.dumps(d,ensure_ascii=False,sort_keys=True,indent=4,separators=(',',':'))
print(j)
执行结果:
{
"age":"20",
"id":"001",
"name":"张三"
}
当然,除了字典类型外,其他一些Python类型也可转成JSON格式的字符串,它们之间有对应关系如下所示:
再来看一下如何将JSON数据写入文件:
importjson
d={'id':'001','name':'张三','age':'20'}
j=json.dumps(d,ensure_ascii=False,sort_keys=True,indent=4,separators=(',',':'))
withopen('test.json','w',encoding='utf-8')asf:
f.write(j)
2.2dump
json模块的dump方法可以将Python对象序列化为JSON格式化流形式的文件类对象。
如果我们需要将数据写到文件里的时候,dump方法会比dumps方法方便一点,看一下示例:
importjson
d={'id':'001','name':'张三','age':'20'}
withopen('test.json','w',encoding='utf-8')asf:
json.dump(d,f,indent=4,ensure_ascii=False)
如果我们需要的数据格式为JSON格式字符串时,比如:将数据存入数据库,这时则需要用dumps方法。
2.3loads
json模块的loads方法可以将JSON格式数据转为Python对象,看个示例:
importjson
j='{"id":"001","name":"张三","age":"20"}'
d=json.loads(j)
print(d)
执行结果:
{'id':'001','name':'张三','age':'20'}
两者之间转换的对应关系如下所示:
我们再来读取一下之前生成的test.json中数据并将其转为Python对象,如下所示:
importjson
withopen('test.json',encoding='utf-8')asf:
data=f.read()
print(json.loads(data))
执行结果:
{'id':'001','name':'张三','age':'20'}
2.4load
json模块的load方法将文件类对象转为Python对象,看个示例:
importjson
withopen('test.json',encoding='utf-8')asf:
print(json.load(f))
执行结果:
{'id':'001','name':'张三','age':'20'}
我们可以看出load方法传的参数是文件对象,而loads方法参数传的是字符串。
Python学习日记