1.概述

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学习日记