Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sinclairnick/jsonpath-ts

Repository files navigation

JSONPath Typescript

Type inference for JSONPath queries, as per RFC 9535: JSONPath: Query Expressions for JSON (see limitations below).

npm i jsonpath-ts

Usage

import { Parse } from "jsonpath-ts";
type Result = Parse<"$.store.book[*].author[2:6]", Data>;
//	 ^? ["Herman Melville", "J. R. R. Tolkien"]
// Given input type
export type Data = {
 store: {
 book: [
 {
 category: "reference";
 author: "Nigel Rees";
 title: "Sayings of the Century";
 price: 8.95;
 },
 {
 category: "fiction";
 author: "Evelyn Waugh";
 title: "Sword of Honour";
 price: 12.99;
 },
 {
 category: "fiction";
 author: "Herman Melville";
 title: "Moby Dick";
 isbn: "0-553-21311-3";
 price: 8.99;
 },
 {
 category: "fiction";
 author: "J. R. R. Tolkien";
 title: "The Lord of the Rings";
 isbn: "0-395-19395-8";
 price: 22.99;
 }
 ];
 bicycle: {
 color: "red";
 price: 399;
 };
 };
};

Limitations

  • Slice steps not supported (::-1)
  • Filtering not supported (?@.hasField)
  • Descendant segments not supported ($...X)

How does it work?

This implementation first converts the input path into an abstract, shallow ordered tree of Selectors, such as NameSelector, IndexSelector etc. This representation is then iterated over to retrieve the derive the correct type from the data.

This functionality can be imported independently via:

import {
	ParsePath, // Input path -> ParsedPath
	ExtractValue // ParsedPath -> Return data type
} from "jsonpath-ts

About

Type inference for JSONPath queries

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /