curl请求数据后jq解析出现parse error:Invalid numeric literal的解决方法
修复jq解析时的"Invalid numeric literal"错误
错误原因
你的curl命令中-c -参数会把cookie内容输出到标准输出(stdout),这会和目标接口返回的JSON内容混合在一起,导致jq接收到的不是纯合法JSON,从而触发解析错误。
修复步骤
1. 修正curl的cookie参数
- 如果不需要保存或输出cookie,直接移除
-c -参数:
curl "https://sample.com" -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0' -H 'Accept: application/json, text/plain, */*' -s | jq .data.name.status
- 如果需要保存cookie到文件,将
-替换为具体文件名(比如cookies.txt):
curl -c cookies.txt "https://sample.com" -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0' -H 'Accept: application/json, text/plain, */*' -s | jq .data.name.status
2. 验证返回内容的合法性
如果修正参数后仍然报错,先单独执行curl命令查看返回内容:
curl "https://sample.com" -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0' -H 'Accept: application/json, text/plain, */*' -s
- 如果返回的是HTML页面(比如404、500错误页),说明请求未成功获取到JSON,需要检查URL是否正确、请求头是否符合要求,或者目标站点是否需要身份验证。
- 如果返回的是JSON,再确认
.data.name.status这个jq路径是否与JSON结构匹配(比如是否存在data字段,data下是否有name,name下是否有status)。
内容的提问来源于stack exchange,提问作者Fitra Agusde
相关产品推荐
相关产品推荐

