jq展平JSON数组

时间:2017-12-19 20:14:08

标签: json jq

echo '{"a":[{"b":[{"c":"xxx"}]},{"b":[{"c":"yyy"},{"c":"zzz"}]}]}' |
    jq '.a[].b | map({"c": .c})'

产生这个:

[
  {
    "c": "xxx"
  }
]
[
  {
    "c": "yyy"
  },
  {
    "c": "zzz"
  }
]

如何获得单个输出数组,如:

[
  {
    "c": "xxx"
  },
  {
    "c": "yyy"
  },
  {
    "c": "zzz"
  }
]

3 个答案:

答案 0 :(得分:2)

$ jq [.[][][][]] <<< "$JSON"
[
  {
    "c": "xxx"
  },
  {
    "c": "yyy"
  },
  {
    "c": "zzz"
  }
]

OR:

$ jq '[.. | select(has("c")?)]' <<< "$JSON"
[
  {
    "c": "xxx"
  },
  {
    "c": "yyy"
  },
  {
    "c": "zzz"
  }
]

答案 1 :(得分:1)

您可以使用:

jq '[{"c":(.a[].b[].c)}]' file.json

答案 2 :(得分:1)

这样做:

jq '[ .a[][][] ]'