当我在多行上拆分文本行并使用命令“ jq。words.json”在屏幕上显示JSON文件时,我得到了parse error
。
一行文本值的JSON文件如下所示:
{
"words" : "one two three four five"
}
命令“ jq。words.json”可以正常工作,并在屏幕上显示JSON文件。
但是当我在两行上分割“一二三四五”的值并运行相同的命令时,会出现解析错误
{
"words" : "one two
three four five"
^
}
解析错误:无效的字符串:控制字符从U + 0000到 U + 001F必须在第3行第20列处转义
分析错误指向第三行末尾的“。
我该如何解决?
Tia, 安东尼
答案 0 :(得分:1)
您必须在JSON中转义行的结尾:
{
"words" : "one two\nthree four five"
}
答案 1 :(得分:1)
这是因为JSON格式无效。它应该看起来像这样:
{
"words" : "one two \nthree four five"
}
答案 2 :(得分:1)
要将带有多行字符串的文本转换为有效的JSON,可以使用any-json
(https://www.npmjs.com/package/any-json),并将其通过管道传输到jq:
$ any-json --input-format=cson split-string.txt
{
"words": "one two three four five"
}
$ any-json --input-format=cson split-string.txt | jq length
1
有关处理几乎JSON文本的更多信息,请参见jq常见问题解答:https://github.com/stedolan/jq/wiki/FAQ#processing-not-quite-valid-json
答案 3 :(得分:0)
分析错误指向第三行末尾的
"
。
jq
标记此错误的方式可能是违反直觉的,但是JSON中的错误在之前指示的引号。
如果错误不是显而易见的,则可能是前一个键或值上缺少结尾引号。在这种情况下,与条件U+0000 through U+001F
匹配的值可以是U+000A
,它是line feed中的ASCII字符。
对于此问题,有意插入换行符。但是,这是invalid JSON。