Awesome
jiq
You can drill down interactively by using jq filtering queries.
jiq uses jq internally, and it requires you to have jq
in your PATH
.
If you prefer, there's an experimental, standalone, purely client-side web version of this on https://jq.alhur.es/jiq/.
Demo
Installation
Either prebuilt binary for your system (and make sure to chmod +x
it first) or install/compile with Go:
go install github.com/fiatjaf/jiq/cmd/jiq@latest
If you don't have jq
installed, follow instructions at https://stedolan.github.io/jq/download/ and make sure to put it in your PATH
.
Usage
Quick start
simple example
Execute the following command:
echo '{"aa":"2AA2","bb":{"aaa":[123,"cccc",[1,2]],"c":321}}'| jiq
Then jiq will be running. Now you can dig JSON data incrementally.
When you enter .bb.aaa[2]
, you will see the following.
[jq]> .bb.aaa[2]
[
1,
2
]
If you press Enter now it will output
[
1,
2
]
and exit (if you want all the output in a single line you can either call jiq -c
or pipe it into jq as jiq | jq -c .
).
advanced usage examples
If you have ever used jq, you'll be familiar with these:
echo '{"economists": [{"id": 1, "name": "menger"}, {"id": 2, "name": "mises"}, {"name": "hayek", "id": 3}]}' | jiq
Now try writing .economists | "\(.[0].name), \(.[1].name) and \(.[2].name) are economists."
or [.economists.[].id]
, or even .economists | map({key: "\(.id)", value: .name}) | from_entries
with curl
Sample for using RDAP data.
curl -s http://rdg.afilias.info/rdap/domain/example.info | jiq
command line arguments
-q
: print the jq filter instead of the resulting filtered JSON to stdout (if you plan to use this with jq later)
Plus all the arguments jq accepts -- they will affect both the JSON output inside jiq and the output that is printed to stdout (beware that some may cause bugs).
traffic analytics for this repo:
Keymaps
key | description |
---|---|
TAB / CTRL + I | Show available items and choice them |
CTRL + W | Delete from the cursor to the start of the word |
CTRL + U | Delete whole query |
CTRL + F / Right Arrow (:arrow_right:) | Move cursor a character to the right |
ALT + F | Move one word forward |
CTRL + B / Left Arrow (:arrow_left:) | Move cursor a character to the left |
ALT + B | Move one word backward |
CTRL + A / Home | To the first character of the 'Filter' |
CTRL + E / End | To the end of the 'Filter' |
CTRL + J / Down Arrow (:arrow_down:) | Scroll json buffer 1 line downwards |
CTRL + K / Up Arrow (:arrow_up:) | Scroll json buffer 1 line upwards |
CTRL + G | Scroll json buffer to bottom |
CTRL + T | Scroll json buffer to top |
CTRL + N / PageDown | Scroll json buffer 'Page Down' |
CTRL + P / PageUp | Scroll json buffer 'Page Up' |
ESC | Hide a candidate box |