Options
All
  • Public
  • Public/Protected
  • All
Menu

json-pointer

This package provides a TypeScript and JavaScript implementation of RFC6901 JavaScript Object Notation (JSON) Pointer.

Usage

Construct a JSON Pointer using Ptr.parse, and then evaluate the pointer using .eval(). You can convert back to a string using .toString().

import Ptr from "@json-schema-spec/json-pointer"

const data = {
  path: {
    to: {
      thing: [
        "foo",
        "bar",
        "baz",
      ],
    },
  },
};

const pointer = Ptr.parse("/path/to/thing/2");
console.log(pointer.eval(data)); // Output: baz
console.log(pointer.toString()) // Output: /path/to/thing/2

If a JSON Pointer points to a non-existent property of its input, then .eval() will throw EvalError:

import Ptr, { EvalError } from "@json-schema-spec/json-pointer"

const data = {
  path: {
    to: {
      thing: [
        "foo",
        "bar",
        "baz",
      ],
    },
  },
};

const pointer = Ptr.parse("/path/to/thing/4");
try {
  pointer.eval(data);
} catch (err) {
  if (err instanceof EvalError) {
    console.log(err.instance); // Output: ["foo", "bar", "baz"]
    console.log(err.token); // Output: 4
  }
}

If you're interested in parsing JSON Pointers that might be invalid, you can catch these errors by looking for InvalidPtrError:

import Ptr, { InvalidPtrError } from "@json-schema-spec/json-pointer"

try {
  Ptr.parse(" invalid json pointer")
} catch (err) {
  if (err instanceof InvalidPtrError) {
    console.error(err.ptr) // Output:  invalid json pointer
  }
}

Generated using TypeDoc