【发布时间】:2018-11-30 07:41:53
【问题描述】:
我认为它作为 JSON 是无效的。 但是 jq 命令不会引发错误并对其进行解析。
什么意思?
$ echo '1 2 3' | jq .
1
2
3
(version : jq-1.5)
【问题讨论】:
我认为它作为 JSON 是无效的。 但是 jq 命令不会引发错误并对其进行解析。
什么意思?
$ echo '1 2 3' | jq .
1
2
3
(version : jq-1.5)
【问题讨论】:
来自jq 手册页:
默认情况下,jq 从 标准输入。空格仅用于分隔实体,例如 1 和 2,以及 true 和 false。
在您的示例中,jq 解析 1,它本身就是一个有效的 JSON 实体,然后继续解析 2 和 3。换句话说:jq 命令解析输入 1 2 3,因为它恰好是由空格分隔的有效 JSON 实体。
如果您使用 --slurp 选项,该选项打印所有输入实体的数组,您可以看到它将 1、2 和 3 视为单独的实体:
# separate entities:
$ echo '1 2 3' | jq --slurp
[
1,
2,
3
]
# a single entity:
$ echo '"1 2 3"' | jq --slurp
[
"1 2 3"
]
为了比较,以下输入将无法解析:
[1 2 3]
1, 2. 3
【讨论】: