You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中API返回JSON单斜杠解析失败,jq删除字段无效求助

解决API返回非法JSON(含单反斜杠)的处理方案

问题根源

API返回的JSON里存在未转义的单个反斜杠(\),这违反了JSON语法规范(JSON要求反斜杠必须转义为\\),导致jq无法正常解析整个JSON结构,所以你之前直接用jq执行删除format字段的命令会失效。

方案1:先修复JSON合法性,再用jq删除字段

先用sed把所有单反斜杠替换成双反斜杠,让JSON变成合法格式,再用jq处理:

SPECIAL_SERVICES_RESPONSE=$(curl -s -X GET -H "Authorization: Bearer ${BEARER_TOKEN}" "${SPECIAL_SERVICES_URL}" | sed 's/\\/\\\\/g' | jq '[.[].inputParameterRules[] | del(.format)]')
  • 细节:sed 's/\\/\\\\/g' 会将每个\替换为\\,修复JSON的语法问题,之后jq就能正常解析并执行删除format字段的操作。

方案2:直接用sed删除format字段(跳过JSON修复)

如果你的目标只是删除format字段,可以直接用sed定位并移除该字段,不需要先修复JSON:

# 匹配并删除"format": "xxx"格式的字段(适用于字段值不含双引号的情况)
SPECIAL_SERVICES_RESPONSE=$(curl -s -X GET -H "Authorization: Bearer ${BEARER_TOKEN}" "${SPECIAL_SERVICES_URL}" | sed '/"format": "[^"]*"/d')

如果format字段嵌套在inputParameterRules下且格式有换行/空格,可以用更精准的匹配:

# 仅删除inputParameterRules块内的format字段
SPECIAL_SERVICES_RESPONSE=$(curl -s -X GET -H "Authorization: Bearer ${BEARER_TOKEN}" "${SPECIAL_SERVICES_URL}" | sed '/"inputParameterRules"/,/]/ s/"format":.*//')

方案3:用jq raw模式预处理(进阶)

如果非法反斜杠仅出现在format字段的值里,可以用jq的原始输入模式先处理字符串,再解析:

SPECIAL_SERVICES_RESPONSE=$(curl -s -X GET -H "Authorization: Bearer ${BEARER_TOKEN}" "${SPECIAL_SERVICES_URL}" | jq -R 'gsub("\\\\"; "\\\\\\\\")' | jq -s '.' | jq '[.[].inputParameterRules[] | del(.format)]')
  • 细节:jq -R以原始字符串读取每行内容,gsub完成反斜杠转义,jq -s '.'将处理后的所有行合并为一个合法JSON结构,最后再用jq执行删除操作。

内容的提问来源于stack exchange,提问作者RKGupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:41:12