簡體   English   中英

Json使用jq在cli上解析

[英]Json parsing on cli using jq

假設我有以下json對象:

{
  "d": {
    "e": {
      "bar": 2
    }
  },
  "a": {
    "b": {
      "c": {
        "foo": 1
      }
    }
  }
}

我想在不輸入'.abcfoo'情況下獲取值foo

我知道我可以做... echo '{ "a":{"b":{"c":{ "foo":1}}},"d":{"e":{"bar":2}}}' | jq '.[][][].foo' echo '{ "a":{"b":{"c":{ "foo":1}}},"d":{"e":{"bar":2}}}' | jq '.[][][].foo'但是jq中是否存在遞歸野生型? 喜歡 **? 我知道jq不支持*,有沒有辦法讓jq支持jsonpath? 也許只是另一個不支持json路徑的cli工具?

在jq 1.4中,您可以執行以下操作:

$ jq '..|.foo?' file.json

如果您堅持使用1.3,則可以使用

$ jq 'recurse(if type == "array" or type == "object" then .[] else empty end) | if type == "object" then . else empty end | .foo' file.json

這有點令人費解...這就是為什么1.4具有..的原因,它遍歷了. ? 運算符,它不會打擾不能被索引的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM