文本分割为多行时出现解析错误:“必须转义从 U+0000 到 U+001F 的控制字符”

Ant*_*ony 10 json jq

当我将文本行拆分为多行并使用命令在屏幕上显示 JSON 文件时,出现“解析错误” jq . words.json

文本值位于一行的 JSON 文件如下所示

{
    "words" : "one two three four five"
}
Run Code Online (Sandbox Code Playgroud)

该命令jq . words.json运行良好并在屏幕上显示 JSON 文件。

但是当我将值“一二三四五”分成两行并运行相同的命令时,我收到解析错误

{
    "words" : "one two   
    three four five"
                   ^
}  
                 
Run Code Online (Sandbox Code Playgroud)

解析错误:无效字符串:从 U+0000 到 U+001F 的控制字符必须在第 3 行第 20 列进行转义

解析错误指向"第三行末尾的字符。

我该如何解决这个问题?

ogu*_*ail 6

这不是有效的 JSON;JSON 字符串不包含文字换行符。但你可以这样做:

jq -Rnr '[inputs] | join("\\n") | fromjson | .choices[0].message.content' sample.json
Run Code Online (Sandbox Code Playgroud)


小智 4

这是因为 JSON 格式无效。它应该看起来像这样:

{
    "words" : "one two \nthree four five"
}
Run Code Online (Sandbox Code Playgroud)