@zakgolba/jsonptr
v1.1.0
Published
Read and write values to locations referenced by JSON pointers as described in RFC 6901
Downloads
10
Maintainers
Readme
jsonptr
Read and write values to locations referenced by JSON pointers as described in RFC 6901.
Usage
Installation
# If you're using npm
npm install @zakgolba/jsonptr --save
# If you're using yarn
yarn add @zakgolba/jsonptr
API Documentation
assign(operand: object, pointer: string, value: any): boolean
Attempts to write a value to the location that the pointer
references.
If the value is stored successfully, the cached pointers for the target
provided will be invalidated.
Returns a boolean
that represents whether or not the value was able to be written to the location that the pointer
references.
import jsonptr from "@zakgolba/jsonptr";
const data = { hello: {} };
jsonptr.assign(data, "/hello/world", "Hello, world!");
console.log(data.hello.world);
// => Hello, world!
console.log(jsonptr.assign(data, "/invalid/reference", "Hello, world!"));
// => false
compile(tokens: Iterable<string>): string
Compiles and returns a JSON pointer from an iterable of unescaped tokens.
import jsonptr from "@zakgolba/jsonptr";
console.log(jsonptr.compile(["hello", "world"]));
// => /hello/world
console.log(jsonptr.compile(["hello/world", "pointer"]));
// => /hello~1world/pointer
deref(operand: object, pointer: string): unknown
Attempts to read and return the value at the location that the pointer
references.
import jsonptr from "@zakgolba/jsonptr";
const data = { hello: { world: "Hello, world!" } };
console.log(jsonptr.deref(data, "/hello/world"));
// => Hello, world!
console.log(jsonptr.deref(data, "/this/points/nowhere"));
// => undefined
parse(pointer: string): IterableIterator<string>
Lazily parses and unescapes each token in the provided pointer
.
import jsonptr from "@zakgolba/jsonptr";
console.log([...jsonptr.parse("/hello/world")]);
// => ["hello", "world"]
for (const token of jsonptr.parse("/hello~1world/pointer")) {
console.log(token);
}
// => hello/world
// => pointer
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.