【问题标题】:jq command parses invalid JSON ( numerics splited with space )jq 命令解析无效的 JSON(数字用空格分隔)
【发布时间】:2018-11-30 07:41:53
【问题描述】:

我认为它作为 JSON 是无效的。 但是 jq 命令不会引发错误并对其进行解析。

什么意思?

$ echo '1 2 3' | jq .
1
2
3

(version : jq-1.5)

【问题讨论】:

    标签: json stream jq


    【解决方案1】:

    来自jq 手册页:

    默认情况下,jq 从 标准输入。空格仅用于分隔实体,例如 1 和 2,以及 true 和 false。

    在您的示例中,jq 解析 1,它本身就是一个有效的 JSON 实体,然后继续解析 23。换句话说:jq 命令解析输入 1 2 3,因为它恰好是由空格分隔的有效 JSON 实体。

    如果您使用 --slurp 选项,该选项打印所有输入实体的数组,您可以看到它将 123 视为单独的实体:

    # 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
    

    【讨论】:

    • 谢谢!我不明白什么是 JSON 实体。但我会试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多