Useful functions when working with JSON.
npm install @stoplight/json 
Useful functions when working with JSON.
- View the changelog: Releases
Supported in modern browsers and node.
``bash`latest stable version
yarn add @stoplight/json
- parseWithPointers: Like JSON.parse(val) but also returns parsing errors as well as full ast with line information.['paths', '/user', 'get']
- pathToPointer: Turns an array of path segments into a json pointer IE -> #/paths/~1user/get.#/paths/~1user/get
- pointerToPath: Turns a json pointer into an array of path segments IE -> ['paths', '/user', 'get'].JSON.parse(val)
- safeParse: Like but does not throw on invalid JSON.JSON.stringify(val)
- safeStringify: Like but handles circular references.x.startsWith(y)
- startsWith: Like native JS but works with strings AND arrays.lodash.startsWith(x, y)
- trimStart: Like but works with strings AND arrays.
- getJsonPathForPosition: Computes JSON path for given position.
- getLocationForJsonPath: Retrieves location of node matching given JSON path.
#### Example parseWithPointers
`ts
import { parseWithPointers } from "@stoplight/json";
const result = parseWithPointers('{"foo": "bar"}');
console.log(result.data); // => the {foo: "bar"} JS object
console.log(result.pointers); // => the source map with a single "#/foo" pointer that has position info for the foo property
`
`ts
// basic example of getJsonPathForPosition and getLocationForJsonPath
import { getJsonPathForPosition, getLocationForJsonPath, parseWithPointers } from "@stoplight/json";
const result = parseWithPointers({
"hello": "world",
"address": {
"street": 123
}
});
const path = getJsonPathForPosition(result, { line: 3, character: 15 }); // line and character are 0-based
console.log(path); // -> ["address", "street"];
const position = getLocationForJsonPath(result, ["address"]);
console.log(position.range.start); // { line: 2, character: 13 } line and character are 0-based
console.log(position.range.end); // { line: 4, character: 3 } line and character are 0-based
`
1. Clone repo.
2. Create / checkout feature/{name}, chore/{name}, or fix/{name} branch.yarn
3. Install deps: .yarn test.prod
4. Make your changes.
5. Run tests: .yarn commit
6. Stage relevant files to git.
7. Commit: . _NOTE: Commits that don't follow the conventional format will be rejected. yarn commit creates this format for you, or you can put it together manually and then do a regular git commit._git push
8. Push: .next` branch.
9. Open PR targeting the