
JSONPath v10.4.1
http://goessner.net/articles/JsonPath/ からの JSONPath のフォーク
(開発依存関係のライセンスも参照してください)
JSONPath Plus
JSONドキュメント(およびJavaScriptオブジェクト)からデータを分析、変換、選択的に抽出します。
jsonpath-plusは、元の仕様を拡張していくつかの追加演算子を加え、元の仕様では明示されていなかったいくつかの動作を明示します。
ブラウザデモまたはRunkit (Node)をお試しください。
注意: このプロジェクトは現在積極的にメンテナンスされていません。十分に文書化されたPRや簡単な更新は受け入れる可能性がありますが、私たち自身で修正を行ったり新機能を追加したりする予定はありません。
機能
- 元のjsonpath仕様に準拠
- 元の仕様にはない便利な追加や詳細化:
- 一致するアイテムの親を取得する
^ - 一致するアイテムのプロパティ名を(配列として)取得する
~ - 以下を取得するための型セレクタ:
- 基本的なJSON型:
@null()、@boolean()、@number()、@string()、@array()、@object() @integer()- 複合型
@scalar()(JavaScriptオブジェクトをクエリする際にundefinedや非有限数をはじめ、すべての基本的な非オブジェクト/非関数型も受け入れます) - ユーザー定義の
otherTypeCallbackと組み合わせて使用できる@other() - 非JSONのJavaScriptオブジェクトをクエリする際に使用できる非JSON型(
@undefined()、@function()、@nonFinite())
- 基本的なJSON型:
- フィルタ内の
@path/@parent/@property/@parentProperty/@root省略セレクタ - エスケープ
- 残りのシーケンスをエスケープする
` - フィルタ内のプロパティ名の特殊文字をエスケープする
@['...']/?@['...']構文
- 残りのシーケンスをエスケープする
$..(すべての親コンポーネントを取得)を文書化
- 一致するアイテムの親を取得する
- ESMおよびUMDエクスポート形式
- クエリされた値に加えて、値へのパスやポインタ、親オブジェクトや親プロパティ名(変更を可能にするため)など、さまざまなメタ情報を返すことができます。
- パス、配列、ポインタ間の変換ユーティリティ
- 元の仕様で許可されている評価を防止するオプション、または評価される値にサンドボックスを提供するオプション。
- 結果が得られたときに結果を処理するコールバックのオプション。
ベンチマーク
jsonpath-plusは、json-querying-performance-testingによると、他のjsonクエリライブラリと比較して、大規模および小規模なデータセットの両方で一貫して高性能です。これらの結果は、プロジェクトを自分で実行し、さらにパフォーマンスケースを追加することで確認できます。
インストール
npm install jsonpath-plus
セットアップ
Node.js
const {JSONPath} = require('jsonpath-plus');
const result = JSONPath({path: '...', json});
ブラウザ
ブラウザで使用する場合は、dist/index-browser-umd.cjs を直接インクルードできます。Browserify の魔法は必要ありません:
<script src="node_modules/jsonpath-plus/dist/index-browser-umd.cjs"></script>
<script>
const result = JSONPath.JSONPath({path: '...', json: {}});
</script>
ESM(モダンブラウザ)
ES6モジュールインポート(モダンブラウザ向け)も使用できます:
<script type="module">
import {
JSONPath
} from './node_modules/jsonpath-plus/dist/index-browser-esm.js';
const result = JSONPath({path: '...', json: {}});
</script>
ESM (バンドラー)
または、JavaScript をバンドルしている場合 (例えば Rollup を使用)、以下を使用するだけで、
mainFields
にはブラウザビルド用に browser を含める必要があることに注意してください (Node の場合、
デフォルトで module をチェックするので問題ありません):
import {JSONPath} from 'jsonpath-plus';
const result = JSONPath({path: '...', json});
使用方法
利用可能な完全なシグネチャは次のとおりです:
const result = JSONPath([options,] path, json, callback, otherTypeCallback);
引数 path、json、callback、otherTypeCallback は、options 上で(利用可能な他のプロパティとともに)代わりに表現することもできます。
result には見つかったすべての項目が含まれる(オプションで配列にラップされる)のに対し、callback は、各項目が発見されるたびに何らかの操作を実行したい場合に使用でき、コールバック関数は結果内で見つかる独立した項目の数に応じて 0 回から N 回実行されることに注意してください。JSONPath で利用可能な引数の詳細については、以下のドキュメントを参照してください。
API ドキュメントも参照してください。
プロパティ
options オブジェクトまたは evaluate メソッド(最初の引数として)に指定できるプロパティには、以下が含まれます: