Python中两个相似字符串为何一个被识别为合法JSON数组一个报错?
问题根因
- 你对已经是JSON格式字符串的
trial执行了二次json.dumps(),导致字符串内部的双引号被额外转义。pd.Series.to_json输出的本身就是合法JSON字符串,再套一层json.dumps()会把这个字符串整体当作JSON字符串值处理,自动加外层双引号、转义内部所有双引号。 - 手动拼接字符串时额外多加了末尾的双引号,进一步破坏了JSON结构。
- 打印显示一致是因为
print(str(变量))会自动处理转义符为可读形式,看不到原始转义内容,你可以执行print(repr(payload_test))和print(repr(my_string))对比,立刻就能看到两者的实际内容差异。
正确实现方式
不要手动拼接字符串构造JSON,直接通过字典列表序列化即可,完全避免转义和结构错误:
import pandas as pd import json df = pd.read_csv('xyz.csv') # 直接将目标列转为字典列表 payload_list = df[['id', 'channel_id', 'entity_type', 'entity_id', 'file_name']].to_dict('records') # 序列化得到合法JSON数组字符串,separators参数控制分隔符后加空格和你示例格式一致 my_payload = json.dumps(payload_list, separators=(', ', ': ')) # 直接传入请求即可 update_template(my_payload, headers)
内容的提问来源于stack exchange,提问作者Vishwanath Ezhil
相关产品推荐
相关产品推荐

