json-where
🔍 Transparent query, pointer and path descriptors for JSON
json-where
converges the following standards and libraries in order to help normalize JSON query/addressing descriptors:
- JsonPath
- Specification: http://goessner.net/articles/JsonPath/
- Library: https://www.npmjs.com/package/jsonpath
- JsonPointer
- JsonQuery
The goal is to increase developer transparency and to provide a unified interface for matching related JSON data.
json-where
's simple interface spares developers from having to:
- decide between which query/addressing specifications(s) to support in their projects
- write an interface for when more than one standard needs support
- bottleneck integrators of their library into a certain specificaton
- write a mechanism that provides a consistent return format (e.g. array vs. element)
Installation
npm install json-where
Usage
Implicit
This example shows how to use the main feature of json-where
, which is being able to provide any descriptor string to $
.
The $
"operator" will automatically imply the correct specification to use based on the descriptor itself:
const data = foo: bar: 'baz' let query = // 'baz'let path = // 'baz'let pointer = // 'baz'
If you want to be slightly more concise you can avoid calling use
:
let query = // 'baz'let path = // 'baz'let pointer = // 'baz'
Explicit
You may also, of course, access and use each specification individually:
// 'baz' // 'baz' // 'baz'
Collections
You can easily specify whether or not you should expect a single object or a collection:
// 'baz'all // ['baz']
A couple of common utility methods are also defined for working with collections:
// 1 // true // false
Identification
You can infer the specification directly from the descriptor itself via which
:
// 'json-query' // 'json-path' // 'json-pointer'
Update
Currently only json-pointer
supports updating values via descriptors:
const path = path // 'bar'path // ...path // 'zab'