简体   繁体   中英

JSON parsing output using jq

I am parsing the output from the below curl as follows -

 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)

How can retain only certain fields in the output. Expected output is

[
   {
      "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
   }
]

Basically, I need to filter out only certain fields & print key, values for it. I am not able to work out th next steps for this. I'd truly appreciate any help here.

If you know the keys you want to extract, just ... extract those.

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}]'

This outputs a list of dictionaries; take out the outer [...] if you actually want just a dictionary at a time in a sequence of JSON fragments in the output (maybe combine with -c then to get one dictionary per line).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM