人生苦短,我用python。

一、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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# json解析

import json

py_data1 = {
'web' : 'baidu',
'url' : 'http://www.baidu.com'
}

json_data = json.dumps(py_data1) # 将 python数据对象 转换为 JSON格式的字符串
py_data2 = json.loads(json_data) # 将 JSON编码的字符串 转换为 python的数据结构

with open('E:\json_data.json', 'w') as f:
json.dump(py_data1, f) # 将 Python数据对象 以 JSON格式 写入文件

with open('E:\json_data.json', 'r') as f:
py_data3 = json.load(f) # 读取 JSON编码文件 解析为 Python数据

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

原始链接: http://pythonfood.github.io/2017/12/30/pythonJSON解析/

× 多少都行~
打赏二维码