目录
首发于:
最近更新于:
分类: posts

json模块

什么是json

json全称是JavaScript Object Notation,也就是JavaScript对象表示法。json是一种基于文本的,人类易读的数据存储交互格式。json文件保存使用后缀 .json 。虽然json是从javascript语言衍生出来,不过其作为数据存储和交互是独立于语言的。json和xml作为数据存储和交互方案相比有更易读和读写速度更快的特点。

json存储格式语法

json存储格式的语法很简单,首先是最基本的数字开始,其支持两种数字类型,整数型和浮点型,其对应于python的int和float;字符串在双引号里面,其对应于python的字符串概念;布尔值true和false,其对应于python的True和False,然后还有一个null对应于python的None;json数据用[]表示,里面的元素用逗号分隔,其对应的正是python的列表概念;然后json的object对象用{} 包围,其内是key:value这样的形式,其正对应于python的字典概念。

python语言已经内置了json模块,所以要读写json文件只需要简单 import json即可。

首先让我们小试牛刀,把 [1,2,3,4,5] 这组数存( dump)进test.json文件里面去。

import json
lst = [1,2,3,4,5]

with open('test.json',mode='w',encoding='utf-8') as f:
    json.dump(lst,f)

json不支持元组(tuple)和字节(bytes)类型,bytes类型一般不会去惊扰它,如果有tuple元组你需要存储,那么将其转换成列表即可。

简单的读取是使用的json的 load 函数,如下所示:

with open('test.json', mode='r', encoding='utf-8') as f:
    lst2 = json.load(f)

这样lst2就被赋值 [1,2,3,4,5] 了,方便后面的运算。

存储字典值

上面的例子稍作修改即可以存储字典值了:

import json
dict01 = {'a':1,'b':2,'c':[1,2,3]}

with open('test.json', mode='w', encoding='utf-8') as f:
    json.dump(dict01,f)

with open('test.json', mode='r', encoding='utf-8') as f:
    dict02 = json.load(f)

print(dict02)

存储到文件的一些美化

上面的dump函数那句读者可以考虑加入 indent 选项:

json.dump(dict01,f,indent=4)

这样我们的test.json文件里面的数据会进行一些缩进,会更好看一些了。

此外 sort_keys选项有时会很有用,默认是False,如果设置为True,则输出的文件的key是排序了的 。

此外 ensure_ascii 选项默认是True,中文字符保存会变为 \uabcd 之类的东西,如果设置为False,则能显示正常的中文字符。

dumps和loads函数

dumps和loads函数是非文件接口版,简单了解下即可。