JSON 使用 jq 解析输出

JSON parsing output using jq

我正在解析以下 curl 的输出,如下所示 -

 curl 'http://www.bom.gov.au/fwo/IDN60801/IDN60801.95765.json' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36' | jq '.[][][] | select(.apparent_t>5)

如何在输出中只保留某些字段。预期输出为

[
   {
      "sort_order":147,
      "lat":-33.8,
      "lon":151.1,
      "apparent_t":10.9
   },
   {
      "sort_order":148,
      "lat":-23.8,
      "lon":128.1,
      "apparent_t":7
   },
   {
      "sort_order":236,
      "lat":-33.34,
      "lon":151.74,
      "apparent_t":21.9
   }
]

基本上,我只需要过滤掉某些字段并为其打印键值。我无法为此制定后续步骤。非常感谢您的帮助。

如果您知道要提取的密钥,只需...提取这些密钥即可。

curl 'http://www.bom.gov.au/fwo/IDN60801/IDN60801.95765.json' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36' |
jq '[.[][][] | select(.apparent_t>5) | {"sort_order": .sort_order, "lat": .lat, "lon": .lon, "apparent_t": .apparent_t}]'

这会输出一个字典列表;如果您实际上一次只想要输出中一系列 JSON 片段中的字典,则取出外部 [...] (可能与 -c 结合,然后每行得到一个字典)。