【问题标题】:jq select value from arrayjq 从数组中选择值
【发布时间】:2016-09-30 12:40:32
【问题描述】:

我有以下带有示例值的 JSON 文件:

{
    "files": [{
        "fileName": "FOO",
        "md5": "blablabla"
    }, {
        "fileName": "BAR",
        "md5": "alaldlafj"
    }]
}

现在我想要返回 md5 值,例如文件名是“FOO”。为此,我在jq 中有以下声明:

cat <file>.json | jq '.[] | select(.fileName=="FOO")' 

但是回复是:jq: error (at &lt;stdin&gt;:11): Cannot index array with string "fileName"

在 key fileName 等于某个参数的情况下,返回 md5 值的正确方法是什么?

【问题讨论】:

    标签: json jq


    【解决方案1】:

    找到答案:

    cat <file>.json | jq -r '.files[] | select(.fileName=="FOO") | .md5'
    

    【讨论】:

    • 为什么要把cat带进来?你可以简单地jq -r '.files[] | select(.fileName=="FOO") | .md5' &lt;file.json&gt;
    【解决方案2】:

    或:

    cat <file>.json | jq -r '.files[] | select(.fileName=="FOO").md5'
    

    【讨论】:

    • 欢迎来到 Stackoverflow!请考虑阅读this 部分以改进您的答案。您能否解释一下您在此处发布的代码?
    【解决方案3】:

    回答更通用的如何从选择所有文件名的数组中选择值:

    cat results.json | jq '.files[] | .filename'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      相关资源
      最近更新 更多