You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python变量在API POST请求中自动添加双引号问题排查

解决POST请求中变量自动添加双引号的问题

首先咱们来捋清楚问题根源:你读取到的v_order_nbr_lst是一个字符串(比如'123','345','567'),当把它放进POST请求的postdata时,如果用了JSON自动序列化(比如requests.post的json参数),Python会自动给字符串套上双引号来符合JSON格式规范——这就是你看到额外双引号的原因。

根据你的需求,这里有几种针对性的解决办法:

办法1:把字符串转成实际的Python列表(推荐)

如果接口期望接收的是订单号数组,那你应该把读取到的字符串转换成真正的列表,而不是保留字符串格式。修改你的文件读取代码:

fileHandle = open('input_file.txt','r')
for line in fileHandle.readlines():
    line = line.rstrip('\n')
    fields = line.split('|')
    # 拆分带单引号的字符串,同时去掉每个元素的单引号,转成列表
    v_order_nbr_lst = [num.strip("'") for num in fields[0].split(',')]

这样v_order_nbr_lst就变成了['123', '345', '567'],之后放进POST的json参数里时,会被序列化为标准的JSON数组["123","345","567"],既符合格式规范,也不会有多余引号的问题。

办法2:直接构造原始请求体(适合非JSON接口)

如果接口确实要求接收'123','345','567'这种带单引号的原始字符串(不带外层双引号),那你需要手动构造请求体,不要依赖自动序列化:

import requests

# 假设接口需要JSON格式,但字段值就是原始带单引号的字符串
post_body = f'{{"order_numbers": {v_order_nbr_lst}}}'
headers = {'Content-Type': 'application/json'}
response = requests.post(your_api_url, data=post_body, headers=headers)

如果是表单提交(Content-Type为application/x-www-form-urlencoded),直接把字符串放进data字典即可:

postdata = {'order_numbers': v_order_nbr_lst}
response = requests.post(your_api_url, data=postdata)

这种方式下,表单数据会以order_numbers='123','345','567'的形式发送,不会自动添加双引号。

办法3:明确处理JSON序列化

如果你用的是requests库,之前用json=postdata导致自动加引号,换成data参数并手动处理序列化:

import json

# 外层双引号是JSON的语法要求,后端读取时会自动忽略,拿到的就是你原始的带单引号字符串
postdata = {"order_numbers": v_order_nbr_lst}
response = requests.post(your_api_url, data=json.dumps(postdata), headers={'Content-Type': 'application/json'})

这种情况完全符合JSON规范,后端解析字段值时,得到的就是你想要的'123','345','567',外层双引号只是JSON的语法包裹,不会作为值的一部分。

内容的提问来源于stack exchange,提问作者rkj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:12:21