gpt4 book ai didi

jq - 如何检查 jq 中的可选字段?

转载 作者:行者123 更新时间:2023-12-02 09:05:57 28 4
gpt4 key购买 nike

我有这个 jq筛选:

some_command | jq -r '.elements[] | select(.state=="LIVE" and .group == "some_text" and .someFlag == false) | .name'
someFlag是一个可选字段。因此,当它不存在时,表达式不会显示任何结果。我想检查:
  • 如果 someFlag 存在,则仅当它具有 false 时才通过检查值
  • 如果 someFlag 不存在,则将其视为 false

  • 我怎样才能做到这一点?

    最佳答案

    我使用了替代运算符,// :

    (.someFlag // false) == false)

    所以,如果 .someFlag不存在,它被视为错误。

    整个表达式是:
    some_command | jq -r '.elements[] | select(.state=="LIVE" and .group == "some_text" and (.someFlag // false) == false)) | .name'

    来自 jq文档:

    Alternative operator //:

    A filter of the form a // b produces the same results as a, if a produces results other than false and null. Otherwise, a // b produces the same results as b.

    This is useful for providing defaults: .foo // 1 will evaluate to 1 if there’s no .foo element in the input. It’s similar to how or is sometimes used in Python (jq’s or operator is reserved for strictly Boolean operations).

    关于jq - 如何检查 jq 中的可选字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58585200/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com