UNPKG

json-p3

Version:

JSONPath, JSON Pointer and JSON Patch

80 lines (60 loc) 3.82 kB
<h1 align="center">JSON P3</h1> <p align="center"> JSONPath, JSON Patch and JSON Pointer for JavaScript. <br> We follow <a href="https://datatracker.ietf.org/doc/html/rfc9535">RFC 9535</a> and test against the <a href="https://github.com/jsonpath-standard/jsonpath-compliance-test-suite">JSONPath Compliance Test Suite</a>. </p> <p align="center"> <a href="https://github.com/jg-rp/json-p3/blob/main/LICENSE"> <img alt="LICENSE" src="https://img.shields.io/npm/l/json-p3?style=flat-square"> </a> <a href="https://github.com/jg-rp/json-p3/actions"> <img src="https://img.shields.io/github/actions/workflow/status/jg-rp/json-p3/tests.yaml?branch=main&label=tests&style=flat-square" alt="Tests"> </a> <a href="https://www.npmjs.com/package/json-p3"> <img alt="NPM" src="https://img.shields.io/npm/v/json-p3?style=flat-square"> </a> <img alt="npm type definitions" src="https://img.shields.io/npm/types/json-p3?style=flat-square"> </p> --- ```javascript import { jsonpath } from "json-p3"; const data = { users: [ { name: "Sue", score: 100 }, { name: "John", score: 86 }, { name: "Sally", score: 84 }, { name: "Jane", score: 55 }, ], }; const nodes = jsonpath.query("$.users[?@.score < 100].name", data); console.log(nodes.values()); // [ 'John', 'Sally', 'Jane' ] ``` ## Links - Docs: https://jg-rp.github.io/json-p3/ - Install: https://jg-rp.github.io/json-p3/#install - JSONPath playground: https://jg-rp.github.io/json-p3/playground - JSONPath syntax: https://jg-rp.github.io/json-p3/guides/jsonpath-syntax - API reference: https://jg-rp.github.io/json-p3/api - Change log: https://github.com/jg-rp/json-p3/blob/main/CHANGELOG.md - NPM: https://www.npmjs.com/package/json-p3 - Issue tracker: https://github.com/jg-rp/json-p3/issues ## Bundles JSON P3 is written in TypeScript, compiled to JavaScript using [Babel](https://babeljs.io/), and bundled using [Rollup](https://rollupjs.org/introduction/). The following, included bundles target `defaults, maintained node version`, as defined by [Browserslist](https://browsersl.ist/#q=defaults%2C+maintained+node+versions). JSON P3 has zero runtime dependencies. | Bundle | Description | | --------------------- | -------------------------------------------------------------------------- | | `json-p3.cjs.js` | A CommonJS formatted bundle. | | `json-p3.esm.js` | An ECMAScript module formatted bundle. | | `json-p3-iife.js` | A bundle formatted as an Immediately Invoked Function Expression. | | `json-p3-iife.min.js` | A minified bundle formatted as an Immediately Invoked Function Expression. | ## Compliance Environment Variables These environment variables control the location of the compliance test suite under test and if nondeterministic object iteration is enabled for those tests. | Environment Variable | Description | | ----------------------------- | --------------------------------------------------------------------------------------------------------------------- | | `JSONP3_CTS_PATH` | The path to `cts.json` used by `compliance.test.ts`. Defaults to `tests/path/cts/cts.json`. | | `JSONP3_CTS_NONDETERMINISTIC` | When set to `true`, enables nondeterministic iteration of JSON objects for `compliance.test.ts`. Defaults to `false`. | ## Contributing Please see [Contributing to JSON P3](https://github.com/jg-rp/json-p3/blob/main/CONTRIBUTING.md) ## License `json-p3` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.