jq for JSON

By  on  

I old enough to remember when we thought XML was going to change the programming world...then JSON saved us from that hell. Parsing and querying JSON data is fundamental task we've all coded for, but sometimes I just want to get some data locally with minimal fuss. I just learned of a really awesome library to do so: jq. Let's have a look at some cool things we can do with jq!

Start by installing jq via a utility like Homebrew:

brew install jq

With Homebrew installed and a local actors.json file, let's go to work on pulling some data!

// Using this JSON file:
// https://raw.githubusercontent.com/algolia/datasets/master/movies/actors.json

// Get the 10th item in an array
cat actors.json | jq '.[10]'
// {
//   "name": "Dwayne Johnson",
//   "rating": 1568,
//   "image_path": "/akweMz59qsSoPUJYe7QpjAc2rQp.jpg",
//   "alternative_name": "The Rock",
//   "objectID": "551486400"
// }

// Get a property from the 10th item in array
// > "Dwayne Johnson"

// Get multiple items
jq '.[10:12]'

// Get items up to the 12th position
jq '.[:12]'

// Get items after the 12th position
jq '.[12:]'

// Get an array of properties from all objects
jq '.[].name'
// > ["William Shatner", "Will Ferrell", ...]

// Create an object with only properties I want
jq '{ name: .[].name, rating: .[].rating}'

// Built in functions!
jq 'sort'
jq 'length'
jq 'reverse'

There are loads of other ways to use jq, so I highly recommend you check out JQ Select Explained: Selecting elements from JSON. I'll keep jq handy for the foreseeable future, as it will be invaluable!

Recent Features

  • By
    Page Visibility API

    One event that's always been lacking within the document is a signal for when the user is looking at a given tab, or another tab. When does the user switch off our site to look at something else? When do they come back?

  • By
    How to Create a RetroPie on Raspberry Pi – Graphical Guide

    Today we get to play amazing games on our super powered game consoles, PCs, VR headsets, and even mobile devices.  While I enjoy playing new games these days, I do long for the retro gaming systems I had when I was a kid: the original Nintendo...

Incredible Demos

  • By
    Fade Images with MooTools LazyLoad

    I recently received an email from a MooTools developer asking a great question about my LazyLoad class: "I'm using your LazyLoad MooTools plugin (which is great, by the way). I have been trying to figure out how to modify it so that once an image scrolls into...

  • By
    WordPress-Style Comment Controls Using MooTools or jQuery

    WordPress has a nice little effect on the Admin Dashboard where it shows and hides the comment control links when you mouseover and mouseout of the record's container. Here's how to achieve that effect using MooTools or jQuery. The XHTML Notice that we place the links into...

Discussion

    Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!