如何在Python的POST请求中以JSON对象传递字典参数
在Python POST请求中正确传递嵌套字典作为JSON对象
问题根源
你之前的错误在于把Mybooks字段赋值成了字符串"myList",而不是直接引用字典变量myList——这会导致请求里传递的是纯文本字符串,而非后端期望的嵌套JSON对象。
正确实现方式
1. 正确构建参数字典
直接将字典变量赋值给Mybooks字段,不要加引号:
# 定义嵌套的书籍字典 myList = {'Title1':'ABC','Title2':'XYZ'} # 构建完整请求参数 myparams = { "userid":"datta", "Mybooks": myList # 直接引用变量,而非字符串"myList" }
2. 发送POST请求(推荐用法)
使用requests库的json参数,它会自动将字典序列化为JSON字符串,并设置正确的Content-Type: application/json请求头:
import requests # 替换为你的目标API地址 api_url = "https://example.com/api/endpoint" response = requests.post(api_url, json=myparams) # 可选:查看响应结果 print(response.status_code) print(response.json())
3. 手动序列化JSON(进阶用法)
如果需要手动控制序列化过程,可以用json.dumps()将字典转为JSON字符串,同时手动设置请求头:
import json import requests api_url = "https://example.com/api/endpoint" # 将参数字典转为JSON字符串 json_data = json.dumps(myparams) # 设置正确的Content-Type头 headers = {"Content-Type": "application/json"} response = requests.post(api_url, data=json_data, headers=headers)
这样发送的请求中,Mybooks字段会被解析为嵌套的JSON对象,而非字符串,后端就能正确处理了。
内容的提问来源于stack exchange,提问作者Dattaprassanna Singbal
相关产品推荐
相关产品推荐

