调用ShadowServer API脚本传入JSON参数时出现JSON解析异常求助
解决ShadowServer API脚本调用的JSON参数引号问题
错误原因
Windows命令提示符(CMD)的引号解析规则和Linux Shell不同,你用的单引号'在CMD中不会被视为字符串边界,导致'{ "help":true }'被拆分成多个零散参数,脚本接收到的JSON格式完全错误,从而触发解析异常。
解决思路与方案
方案1:调整CMD下的引号转义
在Windows CMD中,必须用双引号"包裹JSON字符串,同时对JSON内部的双引号用\"转义。Python代码中可以用原始字符串(r前缀)避免额外的反斜杠转义:
os.system(r'[some_directory]\call-api.py reports/query "{ \"help\":true }" pretty')
如果不用原始字符串,需要把转义符再转义一次:
os.system('[some_directory]\\call-api.py reports/query "{ \\"help\\":true }" pretty')
方案2:改用subprocess.run替代os.system(推荐)
os.system依赖系统shell解析命令,容易出现引号、转义问题。改用subprocess.run直接传递参数列表,完全绕过shell解析,更可靠:
import subprocess subprocess.run( [r'[some_directory]\call-api.py', 'reports/query', '{"help":true}', 'pretty'], check=True # 可选:如果命令执行失败会抛出异常 )
验证方法
先在CMD窗口中直接执行测试命令,确认能正常返回结果后再写入Python代码:
[some_directory]\call-api.py reports/query "{ \"help\":true }" pretty
内容的提问来源于stack exchange,提问作者Prometheus
相关产品推荐
相关产品推荐

