Jsonfilter is a cli tool for filtering and selecting values from json objects.
Binaries are available for x86 and amd64 flavors of Darwin and Linux
wget -qO- https://github.com/benschw/jsonfilter/releases/download/0.1.1/jsonfilter-`uname`-`uname -m`-0.1.1.gz | \
gunzip > /usr/local/bin/jsonfilter
chmod +x /usr/local/bin/jsonfilter
Pretty up a json object
curl -s "http://api.openweathermap.org/data/2.5/weather?units=imperial&q=Austin,Texas" | jsonfilter -pretty
{
"base": "cmc stations",
"clouds": {
"all": 48
},
"cod": 200,
"coord": {
"lat": 30.27,
"lon": -97.74
},
"dt": 1.423154714e+09,
"id": 4.671654e+06,
"main": {
"grnd_level": 1018.67,
"humidity": 74,
"pressure": 1018.67,
"sea_level": 1044.98,
"temp": 44.37,
"temp_max": 44.37,
"temp_min": 44.37
},
"name": "Austin",
"sys": {
"country": "United States of America",
"message": 0.0261,
"sunrise": 1.423142315e+09,
"sunset": 1.423181483e+09
},
"weather": [
{
"description": "scattered clouds",
"icon": "03d",
"id": 802,
"main": "Clouds"
}
],
"wind": {
"deg": 352.5,
"speed": 13.37
}
}
Filter a sub object
curl -s "http://api.openweathermap.org/data/2.5/weather?units=imperial&q=Austin,Texas" | jsonfilter -json coord
{"lat":30.27,"lon":-97.74}
Get a single value
curl -s "http://api.openweathermap.org/data/2.5/weather?units=imperial&q=Austin,Texas" | jsonfilter main.temp
44.37
More examples on the github project page