Python如何默认输出双引号字符串 解决接口JSON解析报错问题
错误原因
你遇到的报错是因为手动拼接JSON字符串不符合JSON语法规范:JSON要求字符串必须用双引号包裹,但Python将列表转为字符串时,默认会用单引号包裹列表内的字符串元素,导致服务端无法解析。
解决方案
不要手动拼接JSON字符串,用Python标准JSON序列化能力即可解决,有两种常用方案:
方案1(优先推荐):直接使用requests的json参数
requests库原生支持直接传Python对象作为请求体,会自动序列化为符合规范的JSON格式,同时自动添加Content-Type: application/json请求头,代码示例:
response = requests.post( 'https://api.name.com/v4/domains:checkAvailability', headers=headers, # 直接传Python字典,不需要自己处理序列化 json={"domainNames": domain_list}, auth=auth )
方案2:使用json模块手动序列化
如果你需要单独生成JSON字符串使用,可以用Python标准库的json.dumps()方法,它生成的字符串天然符合JSON双引号规范:
import json # 自动生成双引号的标准JSON字符串 data = json.dumps({"domainNames": domain_list}) response = requests.post( 'https://api.name.com/v4/domains:checkAvailability', headers=headers, data=data, auth=auth )
不建议通过修改Python默认字符串输出格式的方式解决问题,手动拼接JSON的方式本身就容易出现转义、格式不符等问题,使用标准序列化方法是最稳定的方案。
内容的提问来源于stack exchange,提问作者Safwan Amin
相关产品推荐
相关产品推荐

