https://github.com/hannupekka/jsonni-cli
Transform data on command line
https://github.com/hannupekka/jsonni-cli
csv fromfrom javascript json lodash transformation tsv
Last synced: 6 months ago
JSON representation
Transform data on command line
- Host: GitHub
- URL: https://github.com/hannupekka/jsonni-cli
- Owner: hannupekka
- Created: 2019-04-01T17:18:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T18:55:03.000Z (almost 3 years ago)
- Last Synced: 2025-03-13T13:06:29.918Z (7 months ago)
- Topics: csv, fromfrom, javascript, json, lodash, transformation, tsv
- Language: TypeScript
- Homepage:
- Size: 2.03 MB
- Stars: 14
- Watchers: 0
- Forks: 1
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#  JSONNI
[](http://spiceprogram.org/oss-sponsorship)
Manipulate data with ES6, [Lodash](https://lodash.com/) or [fromfrom](https://github.com/tomi/fromfrom), on command line.
Command line version of [JSONNI](https://github.com/hannupekka/jsonni)
## Install
`npm install -g jsonni-cli`
## Features
- Reads data from `stdin`
- Supports different syntaxes for querying data
- ES
- Lodash
- fromfrom
- Supports multiple output formats
- JSON
- CSV
- TSV
- Customizable output indentation
- Optionally minimized output JSON## Usage
```
Usage: jsonni [options]Options:
-v, --version output the version number
-m --minify minify output
-q --query query to transform data with
--input input format. Available formats: json, tsv, csv
--input-header input CSV/TSV headers. Separated with ","
--input-delimiter CSV/TSV input delimiter character. Defaults to ","
--output output format. Available formats: json, tsv, csv
--output-delimiter CSV/TSV output delimiter character. Defaults to ","
--indent output indentation, defaults to " "
-h, --help output usage information
```### About `-q` parameter
Parameter value should be quoted with single quotes (`'`) instead of double (`"`).
## Examples
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni
```
### Grab first item
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '$input[0]'
```
### Filter
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '$input.filter(item => item.completed)'
```
### Lodash, with chain
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '_.chain($input).orderBy(["title"], ["asc"]).map("title")'
```
### Lodash, without chain
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '_.map(_.orderBy($input, ["title"], ["asc"]), "title")'
```
### fromfrom
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q 'from($input).filter(item => item.title.startsWith("fugiat")).toArray()'
```
### JSON, with custom indentation
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '$input[0]' --indent="\t"
```
### JSON to CSV
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '$input[0]' --output=csv --output-delimiter=";"
```
### JSON to TSV
```
curl --silent http://jsonplaceholder.typicode.com/todos?_limit=5 | jsonni -q '$input[0]' --output=tsv
```
### CSV to JSON
```
cat csv.csv | jsonni -q '$input[0]' --input=csv
```
### CSV to CSV
```
cat csv.csv | jsonni -q '$input.filter(user => user.isActive)' --input=csv --output=csv
```
### CSV to TSV
```
cat csv.csv | jsonni -q '$input.filter(user => user.isActive)' --input=csv --output=tsv
```
### CSV without headers
```
cat csvWithoutHeaders.csv | jsonni -q '$input[0]' --input=csv --input-header=id,isActive,age,name,registered
```
## Acknowledgements
This project is a grateful recipient of the [Futurice Open Source sponsorship program](http://futurice.com/blog/sponsoring-free-time-open-source-activities).
Icon made by [Freepik](https://www.flaticon.com/authors/freepik) from [www.flaticon.com](https://www.flaticon.com)
## License
MIT