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

使用jq 1.6处理OpenAI返回JSON时遇控制字符转义错误求助

解决jq解析含未转义换行符的JSON报错问题

问题背景

你保存了OpenAI API返回的JSON响应到sample.json,其中content字段包含未转义的换行符。使用jq -r '.choices[0].message.content'提取内容时,触发解析错误:

parse error: Invalid string: control characters from U+0000 through U+001F must be escaped at line 3, column 69

解决方案

问题根源是文件中的JSON不符合标准格式(未转义的换行符属于控制字符,必须转义为\n),以下是几种命令行修复方法:

方法1:用jq自身的原始输入模式处理

cat sample.json | jq -Rs 'gsub("\n"; "\\n") | fromjson | .choices[0].message.content'
  • -R:让jq以原始字符串模式读取每行内容
  • -s:将所有行拼接成单个字符串
  • gsub("\n"; "\\n"):把所有未转义的换行符替换为标准JSON转义格式
  • fromjson:将处理后的字符串解析为JSON对象,再提取目标内容

方法2:用sed预转义换行符

sed ':a;N;$!ba;s/\n/\\n/g' sample.json | jq -r '.choices[0].message.content'
  • :a;N;$!ba:循环读取所有行并拼接成一个整体
  • s/\n/\\n/g:全局替换换行符为转义格式,再传给jq解析

方法3:用perl预转义换行符

perl -pe 's/\n/\\n/g' sample.json | jq -r '.choices[0].message.content'
  • -pe:逐行处理输入并打印结果,s/\n/\\n/g完成换行符转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:32:43