json.loads

本文介绍如何使用Python的requests库发送POST请求,并通过json库解析HTTP响应,将内容转换为字典格式以便进一步处理。代码示例展示了设置payload、发送请求及解析返回数据的过程。
import json
import requests
payload={
    1:1,2:2
}
r=requests.post("http://httpbin.org/post",data=payload)
#因为r.content不是字典格式不好取值,所以转换成字典格式
r1=json.loads(r.content.decode('utf8'))  #注意:utf8 不是utf-8
print(r1)

#从字典格式里取值
print(r1['form'])

 

### Python 中 `json.loads` 函数的正确使用方法 `json.loads` 是 Python 标准库 `json` 模块中的一个函数,用于将 JSON 格式的字符串解析为 Python 数据结构。以下是关于 `json.loads` 的详细说明和使用示例: #### 基本语法 ```python json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) ``` - **`s`**: 一个包含 JSON 数据的字符串。 - 其他参数(如 `cls`, `object_hook` 等)是可选的,通常用于高级用途。 #### 示例代码 以下是一个简单的例子,展示如何使用 `json.loads` 将 JSON 字符串转换为 Python 对象[^2]: ```python import json # 定义一个 JSON 格式的字符串 json_str = '{"name": "John", "age": 30, "city": "New York"}' # 使用 json.loads 解析 JSON 字符串 data = json.loads(json_str) # 输出结果 print(data) # 输出: {'name': 'John', 'age': 30, 'city': 'New York'} ``` #### 参数详解 1. **`s`**: 必须是一个有效的 JSON 格式字符串。如果字符串不是合法的 JSON 格式,会抛出 `json.JSONDecodeError`[^4]。 2. **`cls`**: 自定义解码器类,默认为 `None`。 3. **`object_hook`**: 可选参数,用于自定义字典对象的处理方式。 4. **`parse_float`**, **`parse_int`**, **`parse_constant`**: 分别用于指定浮点数、整数和常量的解析方式。 5. **`object_pairs_hook`**: 用于指定如何处理有序键值对。 #### 异常处理 在实际应用中,可能会遇到无效的 JSON 字符串。因此,建议在调用 `json.loads` 时捕获可能的异常: ```python import json try: json_str = '{"name": "John", "age": 30, "city": "New York"' # 缺少右括号 data = json.loads(json_str) except json.JSONDecodeError as e: print(f"JSON 解码错误: {e}") ``` #### 高级用法 可以使用 `object_hook` 参数来自定义对象的解析方式。例如,将 JSON 中的日期字符串转换为 Python 的 `datetime` 对象: ```python import json from datetime import datetime def custom_decoder(dct): if 'date' in dct: try: dct['date'] = datetime.strptime(dct['date'], '%Y-%m-%d') except ValueError: pass return dct json_str = '{"name": "Alice", "date": "2023-10-01"}' data = json.loads(json_str, object_hook=custom_decoder) print(data) # 输出: {'name': 'Alice', 'date': datetime.datetime(2023, 10, 1, 0, 0)} ``` #### 注意事项 1. 如果需要从文件中加载 JSON 数据,请使用 `json.load` 而非 `json.loads`[^2]。 2. 确保输入字符串是合法的 JSON 格式,否则会引发异常。 3. 在处理复杂的 JSON 数据时,可以结合 `object_hook` 或其他参数实现自定义解析逻辑。 ### 总结 `json.loads` 是一个功能强大的工具,能够轻松地将 JSON 字符串转换为 Python 数据结构。通过合理使用其参数,可以满足各种复杂场景下的需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值