json jq select在深度嵌套数组中使用布尔属性

l5tcr1uw  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(114)

我如何选择/过滤所有与字段的连接.usesEncryption是真的使用jq从下面的JSON数据

{
  "connections": {
    "connection": [
      {
        "field": [
          {
            "id": "url",
            "encryptedValueSet": false,
            "usesEncryption": false,
            "componentOverride": false,
            "useDefault": false
          },
          {
            "id": "user",
            "encryptedValueSet": false,
            "usesEncryption": false,
            "componentOverride": false,
            "useDefault": false
          },
          {
            "id": "password",
            "encryptedValueSet": true,
            "usesEncryption": true,
            "componentOverride": false,
            "useDefault": false
          }
        ],
        "id": "3ea89002-51f5-4369-9539-63c3bd406a64"
      }
    ]
  }
}

我试着跟随,但没有按预期工作

jq '. | select(.connections.connection[].field[] | .usesEncryption==true)' EnvironmentExtensions.json
jq '. | .connections.connection[].field[] | select(.usesEncryption==true)' EnvironmentExtensions.json
2skhul33

2skhul331#

要修改内部数组,可以使用(需要jq 1.7):

.connections.connection[].field[] |= select(.usesEncryption)

or(适用于jq 1.6)

.connections.connection[].field |= map(select(.usesEncryption))

或者,重新构建两个数组(jq 1.6):

.connections.connection |= map(.field |= map(select(.usesEncryption)))
xpszyzbs

xpszyzbs2#

下面的过滤器工作正常,但顶层结构从输出中丢失

jq '.connections.connection[].field[] | select(.usesEncryption)' EnvironmentExtensions.json

相关问题