Quick Start: Need to parse JSON from the command line? This jq cookbook shows you the essential commands and examples for filtering, transforming, and processing JSON data effectively. Master jq tutorial techniques with practical examples.

jq Cookbook: What Will You Learn?

  • What is jq?
  • What are the use cases for jq?
  • How do I parse a remote JSON file with jq?
  • How do I parse a local JSON file with jq?
  • How do I reformat a local JSON file with jq?

The Basics

The jq command-line JSON parser is a welcome tool in any programmer’s toolbelt. Use jq to parse JSON to simplify collecting essential information from JSON files.

Primary Use Cases

  • Parse JSON
  • Query JSON
  • Reformat parsed JSON

Less Suitable Use Cases

  • Parsing raw text and XML

When to Use jq?

Use jq when you need to parse JSON files. jq is a versatile tool that can meet a wide range of JSON parsing needs.

jq Cookbook: Practical Examples

Parse A Remote File

Install curl and install jq.

Run this command to query a specific office name from offices.json. This jq tutorial example demonstrates basic JSON parsing.

curl --silent https://raw.githubusercontent.com/jeffabailey/learn/main/tools/jq/offices.json | jq '.[].name'

Parse A Local File

Download offices.json and run these commands in your download folder. This jq cookbook example shows local file processing.

curl --silent https://raw.githubusercontent.com/jeffabailey/learn/main/tools/jq/offices.json > offices.json
jq '.[].name' < offices.json

Press the green run button to see the output of this command.

Reformat A Local File

I am using the previously downloaded offices.json to run this command. This jq tutorial demonstrates advanced formatting techniques.

jq '.[] | {name,location} | join(" is in ")' < ./offices.json

Press the green run button to see the output of this command.

The join() function allows for quick formatting.

Try this command for ad-hoc string concatenation.

jq '.[] | .name + " is in " + .location' < ./offices.json

Filtering JSON Data

Suppose you have a JSON file employees.json and you want to filter out employees who are older than 30 years.

jq '.employees[] | select(.age > 30)' < employees.json

Transforming JSON Data

If you have a JSON file products.json and you want to create a new JSON array with only the product names and prices.

jq '[.products[] | {name: .name, price: .price}]' < products.json

Learn jq - Beyond the Basics

References


Other Learning