#21天学习挑战赛#Python入门之JSON-常用函数详解及示例(7)

本文介绍了Python内置json模块的json.loads()和json.load()函数,用于将JSON格式的数据转换为Python字典。json.loads()处理字符串,而json.load()处理文件流。两者都支持自定义解码器、转换特定数据类型等功能。通过示例,读者可以深入理解这两个函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开卷有益!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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值