开卷有益!JSON是一种易于读写的lightweight文本格式。为了便于将Python格式数据转换为JSON格式,Python3内置了json模块,点击这里了解JSON及其注意事项,点击这里了解json.dumps()函数详解及示例,点击这里了解json.dump()函数详解及其与json.dumps()的区别。接下来详细学习json模块中将json格式转换为Python格式的函数及其示例,希望对你有所帮助!
学无止境!希望往后余生感恩今天的坚持!
活动地址:优快云21天学习挑战赛
json模块除了可以将Python字典转换成json字符串,还可以将json格式的字符串转换成Python字典。通常使用json.loads()和json.load()两个函数,用法和语法格式如下:
①json.loads()#将json格式的字符串转换成Python字段的数据类型。操作字符串。
语法格式:json.loads(s,encoding=None,cls=None, object_hook = None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
- s: 被转换成Python字典的字符串,可以是str类型,也可以是Unicode类型。如果是以ASCII编码的字符串,需要手动设置参数encoding指定编码方式,如果不是以ASCII编码的字符串是不被允许的,必须把它转为unicode。
- cls: 可选参数,可以自定义一个JSONcoder的子类,用于替换JSONCoder类。通过这个功能可以自定义parse_xxx参数。
- object_hook: 可选参数,将返回结果字典替换为你指定的类型,该功能可以用来实现自定义解码器。
- parse_float: 可选参数,被指定后,解码json字符串时,符合float类型的字符串将被转为指定的数据类型,比如可以将其指定为decimal.Decimal。
- parse_int:可选参数。被指定后解码json字符串时,符合int的字符串被转换为指定的数据类型,比如可以将其指定为float。
- parse_constant:可选参数,被指定后在解码json字符串时如果出现-Infinity, Infinity,NaN,被指定的parse_constant方法将会被调用。比如parse_constant=transform, -Infinity->-inf;Infinity->inf, NaN->nan.
- object_pairs_hook:可选参数,将结果以键值对有序列表的形式返回,如:[(k1,v1),(k2,v2),(k3,v3)]。如果object_hook和object_pairs_hook同时指定优先返回object_pairs_hook.
②json.load()#从json格式的文件读取数据并转换为Python类型。操作文件流。
语法格式:json.load(s,encoding=None,cls=None, object_hook = None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
s参数是一个文件流,其余参数与.loads的相同。
③示例
>>> import json
# Python字典
>>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
>>> print(person)
{'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
>>> type(person)
<class 'dict'
# Python字典转换为json字符串
>>> jsonStr = json.dumps(person)
>>> print(jsonStr )
{"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
>>> type(jsonStr)
<class 'str'>
# json字符串再转换为Python字典
>>> python_obj = json.loads(jsonStr)
>>> print(python_obj)
{'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
>>> print(type(python_obj))
<class 'dict'>
# 打印字典的所有key
>>> print(python_obj.keys())
dict_keys(['name', 'age', 'tel', 'isonly'])
# 打印字典的所有values
>>> print(python_obj.values())
dict_values(['小明', 30, ['888888', '1351111111'], True])
#使用loads()操作文件
f = open('data.json', encoding='utf-8') #该文件可以替换成你的json文件
content = f.read() # 使用loads()方法需要先读文件
python_obj = json.loads(content)
print(python_obj)
#使用load()操作文件
f = open('data.json', encoding='utf-8') #该文件可以替换成你的json文件
content = f.read() # 使用loads()方法需要先读文件
python_obj = json.loads(content)
print(python_obj)