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

Python向JSON字符串插入变量触发JSONDecodeError报错如何解决

报错原因

你定义的JSON字符串中直接写入了Python变量名,没有做实际的值替换,JSON解析器会把TransactionID、Date这类变量名当成JSON值处理,不符合JSON语法规范,因此抛出解析错误。

解决方案

方案1(优先推荐):直接构造Python字典

你最终需要的是可被JSON序列化的Python对象,完全不需要先写JSON字符串再解析,直接构造字典即可,完全避免字符串转义和变量替换的坑:

import json

def addRecord(TransactionID, Date, Status, Reference):
    data = {
        "fields": {
            "TransactionID": TransactionID,
            "Date": Date,
            "Status": Status,
            "Reference": Reference
        }
    }
    # 若需要发起POST请求,使用requests库时可以直接将该字典传给json参数,无需手动转字符串
    # 若确实需要JSON格式的字符串,调用json.dumps(data)即可
    return data

方案2:使用f-string做模板替换

如果存在必须用JSON字符串模板的场景,可以用Python的f-string做变量替换,注意JSON字符串里的大括号需要转义(写两个大括号),字符串类型的变量外层需要加双引号:

import json

def addRecord(TransactionID, Date, Status, Reference):
    data =  f"""
        {{
            "fields": {{
                "TransactionID": {TransactionID},
                "Date": {Date},
                "Status": "{Status}",
                "Reference": {Reference}
            }}
        }}"""
    data = json.loads(data)
    return data

该方案需要手动处理不同类型变量的格式,容易出现转义、语法错误,不推荐优先使用。

内容的提问来源于stack exchange,提问作者Yasser AL-attas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:39:01