一、json模块
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
Python3 中可以使用json模块来对JSON数据进行编解码,它主要包含以下四个函数:
json.dumps()
:将python数据对象转换为JSON格式的字符串json.loads()
:将JSON编码的字符串转换为python的数据结构json.dump()
:将python数据对象以JSON格式数据流的形式写入到文件json.load()
:解析包含JSON编码的字符串的文件为python数据对象
Python编码为JSON类型转换对应表:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
JSON解码为Python类型转换对应表:
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
1 | # json解析 |
1、json.dumps()
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
- obj :python数据对象
- skipkeys :当值为True时,若键不是以下类型(str, int, float, bool, None),则会略过,而不是触发错误
- ensure_ascii :当值为True时,输出时会自动转义所有非ASCII字符
- allow_nan :当值为True时,会将超过浮点数取值范围的数值自动对应于JAVASCRIPT的(NaN, Infinity, -Infinity),否则会引发错误
- sort_keys :当值为True时,输出结果会按键值排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import json
py_data = {
'no' : 1,
'name' : 'baidu',
'url' : 'http://www.baidu.com'
}
json_str = json.dumps(py_data)
print ("Python原始数据:", repr(py_data))
print ("JSON对象:", json_str)
#输出结果:
#Python原始数据: {'url': 'http://www.baidu.com', 'no': 1, 'name': 'baidu'}
#JSON对象: {"url": "http://www.baidu.com", "no": 1, "name": "baidu"}
2、json.loads()
json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
- s :包含JSON的字符串、字节以及字节数组
- object_hook :将传入的字典解析后,再调用用户定义的钩子函数,最终返回钩子函数的返回值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import json
py_data1 = {
'no' : 1,
'name' : 'baidu',
'url' : 'http://www.baidu.com'
}
json_str = json.dumps(py_data1)
py_data2 = json.loads(json_str)
print("py_data2[name]:", py_data2['name'])
print("py_data2[url]:", py_data2['url'])
#输出结果:
#py_data2['name']: baidu
#py_data2['url']: http://www.baidu.com
3、json.dump()
1
2
3
4
5 import json
#Python数据对象以JSON格式写入文件
with open('data.json', 'w') as f:
json.dump(data, f)
4、json.load()
1
2
3
4
5 import json
#读取JSON编码文件解析为Python数据
with open('data.json', 'r') as f:
data = json.load(f)
持续更新…
最后更新: 2018年12月04日 21:53