json模块

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, 易于阅读和编辑.

使用JSON函数之前需要导入json库: import json

json.dumps

该函数用于将dict类型的数据转换成str, 这是因为我们不能直接将字典类型的数据写入到文件中, 因此需要先将其转换成字符串才能进行写入

函数原型:

1
2
3
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
encoding="utf-8", default=None, sort_keys=False, **kw)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
json_dict = {
"info": {
"contributor": 'xxx',
'year': 2019
},
'license': 'xxx',
'images': [{}, {}, {}],
'anotations': [{}, {}, {}],
'categories': [{}, {}],
}

json_str = json.dumps(json_dict)
json_save_path = 'test.json'
with open(json_save_path, 'w') as json_file:
json_file.write(json_str)

json.loads

json.loads()用于将str类型的数据转换成dict, 注意是字符串数据, 而不是文件

json.dump

json.dump() 用于将 dict 类型的数据之间转换成str并写入到 json 文件中, 例如, 下面两种写入方式是等价的

1
2
3
4
5
6
7
8
9
10
json_dict = {'a': 123, 'b': 456}
json_save_file = 'save_test.json'

# 方式一
json_str = json.dumps(json_dict)
with open(json_save_file, 'w') as json_file:
json_file.write(json_str)

# 方式二
json.dump(json_dict, open(json_save_file, 'w'))

json.load

可以解析json文件, 之后可以像使用字典一样进行操作.

假如 json file 内容如下所示:

1
2
3
4
5
6
7
8
9
10
{
"info": {
"contributor": 'xxx',
'year': 2019
},
'license': {},
'images': [{}, {}, {}, ...],
'anotations': [{}, {}, {}, ...],
'categories': [{}, {}, ...],
}

1
2
3
4
5
json_file_path = os.path.abspath('test.json')

with open(json_file_path, 'r') as json_file:
json_dict = json.load(json_file)
print(json_dict.keys()) # 'info', 'license', 'images', 'annotations', 'categories'