Last updated on October 20, 2020 by Dan Nanni
If you often deal with JSON-formatted texts from the command line or in shell scripts, you may wonder if there is any command-line utility which can parse JSON string. A command-line JSON parser can be handy when you test or debug JSON web services. You can feed JSON-formatted responses from web services into the command-line JSON parser, thereby easily inspecting otherwise hard-to-read JSON responses or extracting individual objects from them.
In this tutorial, I will describe how to parse JSON string from the command line.
On Linux, there is a command-line JSON processor called jq
which does exactly that. Using jq
, you can parse, filter, map, and transform JSON-structured data effortlessly.
jq
on Linuxjq
on Ubuntu, Debian or Linux Mint$ sudo apt-get install jq
jq
on CentOS or RHELFirst, enable EPEL repository and run:
$ sudo yum install jq
jq
on any other LinuxYou can simply download its binary (available for 32-bit and 64-bit system separately) as follows.
On 64-bit system:
$ wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $ chmod +x ./jq-linux64 $ sudo cp jq-linux64 /usr/bin/jq
On 32-bit system, replace the above wget
command with the following.
$ wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux32
The jq
binary is also available for Windows and OS X platforms, and its full source code is released under the MIT license.
jq
The following examples illustrate how to parse JSON-structured data with jq
.
An example JSON Schema:
$ cat json.txt
{ "name": "Google", "location": { "street": "1600 Amphitheatre Parkway", "city": "Mountain View", "state": "California", "country": "US" }, "employees": [ { "name": "Michael", "division": "Engineering" }, { "name": "Laura", "division": "HR" }, { "name": "Elise", "division": "Marketing" } ] }
To parse a JSON object:
$ cat json.txt | jq '.name'
"Google"
To parse a nested JSON object:
$ cat json.txt | jq '.location.city'
"Mountain View"
To parse a JSON array:
$ cat json.txt | jq '.employees[0].name'
"Michael"
To extract specific fields from a JSON object:
$ cat json.txt | jq '.location | {street, city}'
{ "city": "Mountain View", "street": "1600 Amphitheatre Parkway" }
If you want to parse JSON string inside your program (e.g., written in Python or Perl), you can refer to these Python and Perl tutorials. If what you are interested in is to check if a given JSON string conforms to JSON schema, this tutorial may be useful.
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
Xmodulo © 2021 ‒ About ‒ Write for Us ‒ Feed ‒ Powered by DigitalOcean