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

Python API请求中payload动态传值f字符串失效问题求解

问题根因

当前代码中customfields字段的值是硬编码的普通字符串,字符串内的valuetarget只是固定文本,不会自动关联外部定义的同名变量。如果f-string使用时没有正确给字符串加f前缀、没有用{}包裹变量,也无法实现动态替换。另外手动拼接JSON字符串很容易出现转义错误,当传入值包含引号、换行等特殊字符时,会直接导致JSON格式非法,接口解析失败。

推荐实现方案

优先使用Python原生数据结构构造内容,再通过json模块序列化,完全避免手动拼JSON的格式问题:

import requests
import json

url = "https://www.stie.com/api/conversations/KJQ-CZHNR-985/fields"
valuetarget = "123"

# 构造原生列表/字典结构,直接传入变量
custom_fields_structure = [
    {"code": "orderno", "value": valuetarget}
]

payload = {
    'apikey': 'zbyc88srdi333d3dpq5lye48pgg1tfo1pnjvj65ld',
    'customfields': json.dumps(custom_fields_structure, ensure_ascii=False)
}
files = []
headers = {}

response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)

这种写法下,不管valuetarget是数字、字符串还是包含特殊字符的内容,json.dumps都会自动处理转义,生成符合规范的JSON字符串。

f-string的正确写法(不推荐)

如果一定要用f-string实现,需要给字符串加f前缀,变量用{}包裹,注意JSON本身的大括号需要写两次转义:

valuetarget = "123"
payload = {
    'apikey': 'zbyc88srdi333d3dpq5lye48pgg1tfo1pnjvj65ld',
    'customfields': f'[{{"code": "orderno", "value":"{valuetarget}"}}]'
}

注意:该写法容错性极差,一旦传入值包含双引号、反斜杠、换行符等特殊字符,拼接出的JSON会直接格式错误,非特殊场景不要使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:48:29