如何在Python中让字典列表值以双引号包裹用于POST请求?
解决方法
其实你完全不用手动处理引号问题,Python的json模块会自动帮你把字符串转换成JSON要求的双引号格式。你之前的困惑是把Python字典的控制台显示和最终JSON输出搞混了——Python里用单引号包裹字符串只是控制台的默认显示方式,根本不影响最终发送给API的JSON格式。
正确的循环遍历写法如下:
import requests import json my_list = ['a14mnas','ty6798h'] api_url = "你的API地址" headers = {"Content-Type": "application/json"} # 建议加上这个头部,明确告诉API请求格式 # 遍历列表里的每个元素,逐个发请求 for item in my_list: api_body = { "Page": 1, "Pages": 3, "Ids": [item] # 直接把元素放进列表赋值给Ids就行 } # 用json.dumps序列化字典,自动生成双引号的JSON格式 myrequest = requests.post(api_url, headers=headers, data=json.dumps(api_body)) # 可以打印序列化后的内容验证,会看到都是双引号 print(json.dumps(api_body))
补充:更简洁的写法
requests库还提供了json参数,能自动帮你序列化字典,同时自动设置Content-Type头部,省去手动调用json.dumps的步骤:
for item in my_list: api_body = { "Page": 1, "Pages": 3, "Ids": [item] } myrequest = requests.post(api_url, headers=headers, json=api_body)
这样写出来的代码更简洁,也能保证发送的JSON格式完全符合API要求。
内容的提问来源于stack exchange,提问作者msksantosh
相关产品推荐
相关产品推荐

