jaycue is my little side project that mimics the best parts jq in pure JavaScript. I wrote a blog post about it on dev.to
I am TDD'ing this to get some practice, using the jq documentation, and hopefully make something useful. Please see below for some similar, more mature, great projects built around jq
.
Install
$ npm install jaycue
Usage
const jq = require('jaycue');
console.log(jq({foo: 123}, '.foo'));
123
Supported Filters
Basic Filters
{
"value": 42,
"text": "less interesting data",
"name": {
"first": "Brian"
"last": "Olore"
}
}
filter | output |
---|---|
. |
{ "value": 42, "text": "less interesting data","name": { "first": "Brian" "last": "Olore" } } (object) |
.value |
42 (number) |
.text |
less interesting data (string) |
.["text"] |
less interesting data (string) |
.name |
"name": { "first": "Brian" "last": "Olore" } (object) |
.name.first |
Brian (string) |
.missing |
undefined |
.missing? |
null |
.["missing"]? |
null |
Array Filters
["a","b","c","d","e"];
filter | output |
---|---|
.[] |
"a","b","c","d","e" (not json) |
.[0] |
a |
.[-2] |
d |
Array Slicing Filters
filter | output |
---|---|
.[2:4] |
["c", "d"] |
.[:3] |
["a", "b", "c"] |
.[:-3] |
["a", "b"] |
.[-2:] |
["d", "e"] |
.[2:] |
["c", "d", "e"] |
Select Function
[
{"id": "first", "val": 1},
{"id": "second", "val": 2}
]
filter | output |
---|---|
.[] | select(.id == "second") |
{"id": "second", "val": 2} |
.[] | select(.id == "second") | .val |
2 (number) |
.[] | select(.id == "second") .val |
2 (number) |
.[] | select(.id != "second") .val |
1 (number) |
Testing
Must have
jq
installed to run testsjq
is now supplied by node-jq
As previously mentioned, all code has been test-driven. The test-helper provides a way to call the actual jq
, making it easy to compare results.
Running tests
npm test
Notes
Read the jq Language Description
Check out this project which is a JavaScript wrapper around jq: https://github.com/sanack/node-jq. Here are some more cool jq projects: https://github.com/fiatjaf/awesome-jq
Thanks
- Logo by Joseph Olore