Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fiatjaf/jiq
jid on jq - interactive JSON query tool using jq expressions
https://github.com/fiatjaf/jiq
cli command-line jq json
Last synced: about 1 month ago
JSON representation
jid on jq - interactive JSON query tool using jq expressions
- Host: GitHub
- URL: https://github.com/fiatjaf/jiq
- Owner: fiatjaf
- License: mit
- Archived: true
- Fork: true (simeji/jid)
- Created: 2016-12-03T23:42:33.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-01-09T17:59:27.000Z (almost 2 years ago)
- Last Synced: 2024-08-02T15:48:27.704Z (4 months ago)
- Topics: cli, command-line, jq, json
- Language: Go
- Homepage:
- Size: 3.4 MB
- Stars: 913
- Watchers: 7
- Forks: 32
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-json - jiq - It's `jid` with `jq`. You can drill down interactively by using `jq` filtering queries. (Command-line tools)
- awesomeness - jiq - You can drill down interactively by using jq filtering queries. (DevShit)
- awesome-hacking-lists - fiatjaf/jiq - jid on jq - interactive JSON query tool using jq expressions (Go)
README
# jiq [![Mentioned in Awesome jq](https://awesome.re/mentioned-badge.svg)](https://github.com/fiatjaf/awesome-jq)
It's [jid](https://github.com/simeji/jid) with [jq](https://stedolan.github.io/jq/).
You can drill down interactively by using [jq](https://stedolan.github.io/jq/) filtering queries.
jiq uses [jq](https://stedolan.github.io/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
![screencast.gif](screencast.gif)
## Installation
Either [prebuilt binary for your system](https://github.com/fiatjaf/jiq/releases) (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](#simple-example)
* [advanced usage examples](#advanced-usage-examples)
* [with curl](#with-curl)#### 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
```json
[
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](https://datatracker.ietf.org/wg/weirds/documents/) 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](https://stedolan.github.io/jq/manual/#Invokingjq) -- 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:
[![](https://ght.trackingco.de/fiatjaf/jiq)](https://ght.trackingco.de/)
## 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|