ence
automation friendly json schemas
- Deterministic result ideal for diffs and snapshot testing
- Full address output convenient for grep analysis
- Missing/inconsistent object key detection
- Compatible with any tool outputting to stdin
Syntax
.items[n].name.en :: null | string└────────┬──────┘ └─────┬─────┘ address type(s)
Example
:: array[n] :: null | object[n].abc :: empty | number[n].id :: number | string
Install
CLI
$ npm install --global ence
Package
$ npm install ence
Usage
CLI
ence [--help] [--pretty]
# Explore api response data $ curl example.com/data.json | ence # Analyze local file $ cat ./data.json | ence --pretty
# Filter top level keys $ ... | ence | grep -P "^\.\w+ ::" # Filter potentially empty addresses $ ... | ence | grep -P "::.*empty" # Filter mixed-type arrays $ ... | ence | grep -P "\[n\] ::.*\|"
API
// compute schemaencejson: string, options?: Options: string
const ence = ; ; // => " :: array"; // => " :: list"
Performance
Quad core Intel Core i7-8550U @ 1.80GHz
+---------------------------+-----------+------------+| Example | Time (ms) | Input (kB) |+===========================+===========+============+| data-bank | 42.26 | 1624.44 || data-reddit | 6.74 | 207.46 || data-government | 5.44 | 168.95 || array-array-object-empty | 0.02 | 0.15 || array-object-empty-simple | 0.02 | 0.13 || array-object | 0.01 | 0.10 || array-object-empty-mixed | 0.02 | 0.08 || object-array-mixed | 0.01 | 0.05 || object-simple | 0.01 | 0.05 || array-simple | 0.01 | 0.03 || array-mixed | 0.01 | 0.01 || string | 0.00 | 0.01 || boolean | 0.00 | 0.01 || null | 0.00 | 0.01 || number | 0.00 | 0.00 || object | 0.00 | 0.00 || array | 0.01 | 0.00 |+---------------------------+-----------+------------+
The test cases can be found in this directory.