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
相关产品推荐
相关产品推荐

