【问题标题】:Why jq array returns length is greater than actual no of array items为什么 jq 数组返回的长度大于数组项的实际数量
【发布时间】:2015-09-27 14:38:22
【问题描述】:

我有一个 json 文件

{
  "file" : {
      "a" : 1,
      "b" : 2
    }
}

我正在使用jq 来计算此 json 对象中文件值的键数。

然后在 bash 上使用

arr=($(cat jsonfile.json | jq '.file' | jq -r 'keys'))
echo ${#arr[@]}

这里我得到输出 4 而只有 2 个键 a,b

为什么会这样,我如何让 arr 只有两个元素 ab.?

【问题讨论】:

    标签: arrays bash jq


    【解决方案1】:

    要了解为什么会得到一个包含 4 个元素的数组,请查看子 shell 的输出:

    cat jsonfile.json | jq '.file' | jq -r 'keys'
    

    这会产生:

    [
      "a",
      "b"
    ]
    

    那里的每一行都成为数组的一个元素 -> 4 行。

    试试这个:

    jq -r '.file | keys | .[]' jsonfile.json
    

    输出:

    a
    b
    

    我还简化了你原来的表达方式。 (感谢@JeffMercado!)

    【讨论】:

    • jq -r '.file | keys | .[]' jsonfile.json
    • 谢谢@JeffMercado,太好了,更新了我的帖子(+ 给了你信用)
    猜你喜欢
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2020-09-04
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多