2014-03-24 03:12:18 +08:00
|
|
|
# jsontools
|
|
|
|
|
2014-03-25 02:09:57 +08:00
|
|
|
Handy command line tools for dealing with json data.
|
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
To use it, add `jsontools` to the plugins array in your zshrc file:
|
2014-03-25 02:09:57 +08:00
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
```zsh
|
|
|
|
plugins=(... jsontools)
|
|
|
|
```
|
2014-03-24 03:12:18 +08:00
|
|
|
|
2024-10-27 22:13:05 +08:00
|
|
|
## Requirements
|
|
|
|
|
|
|
|
The plugin uses one of these tools to process JSON data, in the following order:
|
|
|
|
|
|
|
|
- `node`
|
|
|
|
- `python3`
|
|
|
|
- `ruby`
|
|
|
|
|
|
|
|
Any of these must be in `$PATH` before the plugin is loaded, otherwise the plugin exits
|
|
|
|
prematurely and the functions will not be available.
|
|
|
|
|
2014-03-27 06:47:57 +08:00
|
|
|
## Usage
|
2014-03-24 03:12:18 +08:00
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
Usage is simple... just take your json data and pipe it into the appropriate jsontool:
|
|
|
|
|
|
|
|
- `pp_json`: pretty prints json.
|
|
|
|
- `is_json`: returns true if valid json; false otherwise.
|
|
|
|
- `urlencode_json`: returns a url encoded string for the given json.
|
|
|
|
- `urldecode_json`: returns decoded json for the given url encoded string.
|
|
|
|
|
2021-09-11 06:52:00 +08:00
|
|
|
### Supports NDJSON (Newline Delimited JSON)
|
|
|
|
|
2024-09-15 21:14:38 +08:00
|
|
|
The plugin also supports [NDJSON](https://github.com/ndjson/ndjson-spec) input, which means all functions
|
2021-09-11 06:52:00 +08:00
|
|
|
have an alternative function that reads and processes the input line by line. These
|
|
|
|
functions have the same name except using `ndjson` instead of `json`:
|
|
|
|
|
|
|
|
> `pp_ndjson`, `is_ndjson`, `urlencode_ndjson`, `urldecode_ndjson`.
|
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
### Examples
|
|
|
|
|
|
|
|
- **pp_json**:
|
2014-03-25 02:09:57 +08:00
|
|
|
|
2021-09-11 06:52:00 +08:00
|
|
|
```console
|
2014-03-24 03:12:18 +08:00
|
|
|
# curl json data and pretty print the results
|
|
|
|
curl https://coderwall.com/bobwilliams.json | pp_json
|
2014-03-26 04:20:25 +08:00
|
|
|
```
|
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
- **is_json**:
|
|
|
|
|
2021-09-11 06:52:00 +08:00
|
|
|
```console
|
|
|
|
# validate if file's content conforms to a valid JSON schema
|
|
|
|
$ is_json < data.json
|
|
|
|
true
|
|
|
|
# shows true / false and returns the proper exit code
|
|
|
|
$ echo $?
|
|
|
|
0
|
2014-03-27 06:47:57 +08:00
|
|
|
```
|
2014-03-26 04:20:25 +08:00
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
- **urlencode_json**:
|
|
|
|
|
2021-09-11 06:52:00 +08:00
|
|
|
```console
|
2014-03-26 04:20:25 +08:00
|
|
|
# json data directly from the command line
|
2021-09-11 06:52:00 +08:00
|
|
|
$ echo '{"b":2, "a":1}' | urlencode_json
|
|
|
|
%7B%22b%22:2,%20%22a%22:1%7D
|
2014-03-27 22:34:54 +08:00
|
|
|
```
|
|
|
|
|
2020-03-12 02:57:46 +08:00
|
|
|
- **urldecode_json**:
|
|
|
|
|
2021-09-11 06:52:00 +08:00
|
|
|
```console
|
2014-03-27 22:34:54 +08:00
|
|
|
# url encoded string to decode
|
2021-09-11 06:52:00 +08:00
|
|
|
$ echo '%7B%22b%22:2,%20%22a%22:1%7D' | urldecode_json
|
|
|
|
{"b":2, "a":1}
|
|
|
|
```
|
|
|
|
|
|
|
|
- **pp_ndjson**:
|
|
|
|
|
|
|
|
```console
|
|
|
|
# echo two separate json objects and pretty print both
|
|
|
|
$ echo '{"a": "b"}\n{"c": [1,2,3]}' | pp_ndjson
|
|
|
|
{
|
|
|
|
"a": "b"
|
|
|
|
}
|
|
|
|
{
|
|
|
|
"c": [
|
|
|
|
1,
|
|
|
|
2,
|
|
|
|
3
|
|
|
|
]
|
|
|
|
}
|
2020-03-12 02:57:46 +08:00
|
|
|
```
|