New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

node-jq

Package Overview
Dependencies
Maintainers
1
Versions
91
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-jq

Run jq in node

  • 1.6.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
76K
increased by4.71%
Maintainers
1
Weekly downloads
 
Created
Source

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

DescriptionTypeValuesDefault
Type of inputstring'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: 'file'

Run jq query against multiple JSON files.

jq.run('.', ['/path/to/file.json','path/to/other_file.json']).then(console.log)
// {
//   "foo": "bar"
// }
// {
//   "otherFoo": "andBar"
// }
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

DescriptionValuesDefault
Type of output'pretty', 'json', 'compact', '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: 'compact'|'string'

Return the output as a String.

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

slurp

DescriptionValuesDefault
Read input stream into arraytrue, falsefalse
slurp: true

Read input stream into array.

jq.run('.', ['/path/to/file.json','/path/to/other_file.json'], { output: 'json', slurp: true }).then(console.log)
// [
//   {
//     "foo": "bar"
//   },
//   {
//     "otherFoo": "andBar"
//   }
// ]

sort

DescriptionValuesDefault
Sort object keys in alphabetical ordertrue, falsefalse
sort: true

Sorts object keys alphabetically.

jq.run('.', ['/path/to/file.json'], { output: 'json', sort: true }).then(console.log)
// {
//   "a": 2,
//   "b": 1
// },

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

Keywords

FAQs

Package last updated on 08 Apr 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc