json-morph
Version:
Transform JSON like a boss.
127 lines (91 loc) โข 3.3 kB
Markdown
# ๐ฆ json-morph [](https://www.npmjs.com/package/json-morph) [](https://npmjs.org/package/json-morph)
**Transform JSON like a boss.**
Filter it. Reshape it. Clean it. Remix it. All from your terminal.
> _"Why mutate your JSON by hand when you can morph it like a shapeshifter?"_
---
## โจ What is `json-morph`?
`json-morph` is a command-line tool and API that helps you **transform JSON data** using simple, expressive flags.
- ๐ง Filter using logical expressions (`age > 18 && status == 'active'`)
- ๐ Map keys to new paths (`user.name` โ `fullName`)
- โ Add static fields (`role:admin`)
- โ Remove sensitive fields (`password`, `secret`)
- ๐
Pretty-print or export to a new file
Perfect for quick one-liners, data munging, CLI pipelines, config transforms, and replacing brittle `jq` scripts for common tasks.
---
## ๐ Installation
```bash
npm install -g json-morph
```
## ๐ ๏ธ Usage
```bash
json-morph input.json [options]
```
### Options
| Flag | Description |
| --- | --- |
| --map | Remap keys: "from.path:to.path" |
| --filter | Filter expression: "age > 18 && active == true" |
| --add | Add static fields: "key:value" |
| --remove | Remove fields: "password,token" |
| --preserve | Preserve all original fields (used with --map) |
| --output, -o | Output to a file |
| --pretty | Pretty-print output |
| --help | Show help |
| --version | Show version |
### ๐ Examples
## ๐งผ Filter and Clean
```bash
npx json-morph users.json \
--filter "age > 21 && active == true" \
--remove "password,internalNote" \
--output active-users.json
```
## ๐ Remap Keys
```bash
npx json-morph input.json \
--map "user.name:fullName" \
--map "user.id:userId" \
--preserve
```
## โ Add Fields
```bash
npx json-morph input.json \
--add "status:active" \
--add "score:100"
```
## ๐งช Combine It All
```bash
npx json-morph data.json \
--filter "score >= 80" \
--map "user.email:contact.email" \
--add "passed:true" \
--remove "debugLog" \
--pretty
```
## ๐งฌ Programmatic Usage
You can also use json-morph as a library:
```javascript
import { transformJson } from 'json-morph';
const data = [{ name: 'Alice', age: 25 }];
const flags = {
filter: ['age > 18'],
map: ['name:fullName'],
add: ['status:active'],
};
const output = transformJson(data, flags);
console.log(output);
```
## โก Why Use json-morph?
* โ
Lightweight, dependency-free
* โ
Safer and easier than writing ad hoc scripts
* โ
Works with deeply nested JSON
* โ
Expressive filter logic without learning jq
* โ
Scriptable, composable, and fun โจ
## ๐ค About the Author
Built by [cinfinit](https://github.com/cinfinit), a part-time JSON whisperer, full-time logic artisan, and lifelong member of the "why-is-this-API-like-this" club.
Loves:
* Clean abstractions
* Messy data
* Terminal one-liners that look like sorcery
When not mutating JSON structures, probably found arguing with a linter, renaming variables obsessively, or building another side project that absolutely no one asked for โ but everyone secretly needed.
โIf it involves curly braces and chaos, Iโm probably interested.โ