
Product
Introducing the Alert Details Page: A Better Way to Explore Alerts
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.
@remy/node-jq
Advanced tools
node-jq is a wrapper for jq - a lightweight and flexible command-line JSON processor.
npm install node-jq --save
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"
}
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...
})
| Description | Type | Values | Default |
|---|---|---|---|
| Type of input | string | '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"
// }
| Description | Values | Default |
|---|---|---|
| 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"}
| Description | Values | Default |
|---|---|---|
| Read input stream into array | true, false | false |
slurp: trueRead 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"
// }
// ]
| Description | Values | Default |
|---|---|---|
| Sort object keys in alphabetical order | true, false | false |
sort: trueSorts object keys alphabetically.
jq.run('.', ['/path/to/file.json'], { output: 'json', sort: true }).then(console.log)
// {
// "a": 2,
// "b": 1
// },
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:
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.
FAQs
Run jq in node
We found that @remy/node-jq demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Product
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.

Product
Campaign-level threat intelligence in Socket now shows when active supply chain attacks affect your repositories and packages.

Research
Malicious PyPI package sympy-dev targets SymPy users, a Python symbolic math library with 85 million monthly downloads.