node-jq-hazardous

1.0.0 • Public • Published

node-jq logo


node-jq is a wrapper for jq - a lightweight and flexible command-line JSON processor.


Installation

npm install node-jq --save

Usage

jq example

Usually in your CLI with jq you would run:

jq ".abilities[].moves" bulbasaur.json

and you would get

{
  "name""heartgold-soulsilver",
  "power""10"
}
{
  "name""platinum",
  "power""50"
}
{
  "name""diamond-pearl",
  "power""99"
}

node-jq equivalent

With node-jq you could run it programmatically and interact with the output as a JavaScript Object:

const jq = require('node-jq')
 
const filter = '.abilities[].moves'
const jsonPath = '/path/to/bulbasaur.json'
const options = {}
 
jq.run(filter, jsonPath, options)
  .then((output) => {
    console.log(output)
    /*
      {
        "name": "heartgold-soulsilver",
        "power": "10"
      },
      {
        "name": "platinum",
        "power": "50"
      },
      {
        "name": "diamond-pearl",
        "power": "99"
      }
    */
  })
  .catch((err) => {
    console.error(err)
    // Something went wrong...
  })

Options

input

Description List Default
Specify the type of input 'file', 'json', 'string' 'file'

input: 'file'

Run the jq query against a JSON file.

jq.run('.', '/path/to/file.json').then(console.log)
// {
//   "foo": "bar"
// }

input: 'json'

Run the jq query against an Object.

jq.run('.', { foo: 'bar' }, { input: 'json' }).then(console.log)
// {
//   "foo": "bar"
// }

input: 'string'

Run the jq query against a String.

jq.run('.', '{ foo: "bar" }', { input: 'string' }).then(console.log)
// {
//   "foo": "bar"
// }

output

Description List Default
Specify the type of output 'pretty', 'json', 'string' 'pretty'

output: 'pretty'

Return the output as a String.

jq.run('.', '/path/to/file.json', { output: 'string' }).then(console.log)
// {
//   "foo": "bar"
// }

output: 'json'

Return the output as an Object.

jq.run('.', '/path/to/file.json', { output: 'json' }).then(console.log)
// { foo: 'bar' }

output: 'string'

Return the output as a String.

jq.run('.', '/path/to/file.json', { output: 'string' }).then(console.log)
// {"foo":"bar"}

Projects using node-jq

Why?

Why would you want to manipulate JavaScript Objects with jq syntax in a node app, when there are tools like lodash? The idea was to port jq in node to be able to run it as-is. node-jq doesn't try to replace Object filters, maps, or transformations.

Our primary goal was to make jq syntax available in Atom with atom-jq.

Other than that, jq is an interesting CLI tool to quickly parse the response of an API, such as:

curl 'https://jsonplaceholder.typicode.com/comments' | jq '.[].postId'

There are also people dealing with complex responses:

Want to learn jq?

Seems hard to learn, but it really isn't.

jq is like sed for JSON. Slice, filter, map and transform structured data in a simple and powerful way.

Take a look at this great introduction or a jq lesson.

You can check out the official manual and fiddle around in the online playground jqplay.org.

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i node-jq-hazardous

Weekly Downloads

7

Version

1.0.0

License

MIT

Last publish

Collaborators

  • nire0510