JSONツール

JMESPathテスター必要な値を、使える形に

年齢による絞り込みから試せます。ボタンまたはCtrl/Cmd+Enterで実行し、変更後は再実行してください。

JMESPathテスター

JSON入力

結果

表示は5,000文字ずつです。コピーと保存には結果全体を含みます。

JSONと式はブラウザーのメモリー内で処理し、保存しません。

公式jmespath.js 0.16.0・安全性パッチ・標準26関数

結果が古いため、コピーと保存は無効です。

JMESPathテスターは、APIの応答から欲しい項目だけを取り出して、後続の処理へ渡す前に役立ちます。値が正しくても配列とオブジェクトを取り違えるとスクリプトが動かないため、出力の形まで確認します。

JSONデータに対して短いJMESPath式を試し、クエリ例で投影とオブジェクト構築の違いを比べてください。元の文書を変更せず、新しい戻り値を作ります。

JMESPathテスターで確認できること

条件と投影を分けて考える

まず条件に合う人物を残し、次に名前だけを取り出します。投影ではnullになった項目が省かれるため、入力と出力の要素数が同じとは限りません。位置を保ちたい場合は多選択リストも検討してください。

条件を満たすレコードだけが選ばれ、指定フィールドの一覧になる図。

戻り値の形を先に決める

名前の一覧と人数を一つのオブジェクトにまとめたり、属性で並べ替えたりできます。JMESPathテスターで出力を見れば、後続処理が期待するキーと型になっているかを確かめられます。

複数のフィールドから新しいオブジェクトを組み、関数で集合を単一値に変える図。

型と更新タイミングを確かめる

01

厳密なJSONを用意する

貼り付けとローカルファイル読込に対応します。ファイルは500,000バイト、入力は500,000文字までです。読込、サンプル、クリアは置換のプレビュー後に適用し、一度だけ元に戻せます。 ファイルは有効なUTF-8に限ります。BOMは自動削除せず、JSON検証でエラーになります。

02

式を直したら実行する

自動実行はありません。Ctrl/Cmd+Enterも利用できます。クエリ例を選ぶと式だけが変わり、前の結果は古い状態になります。新しい実行が成功するまでコピーと保存は無効です。

03

表示範囲と結果を区別する

null、false、0、空文字列、[]はいずれも正常な結果になり得ます。表示は5,000文字ずつ増やせますが、コピーとダウンロードには受理された結果全体が含まれます。

抽出から集計までの式

数値で配列を絞り込む

people[?age >= `18`].nameは年齢を比較して名前を返します。数値リテラルはバッククォートで囲みます。数字を含む文字列と数値は別の型であり、自動的に同一視されません。

オブジェクトを構築する

{names: people[].name, count: length(people)}のように戻り値へ名前を付けられます。多選択リストは投影とは異なり、nullを要素として残せるため、位置が重要な処理に使えます。

パイプで処理をつなぐ

左側の結果全体を右側に渡して、抽出後に先頭要素を選ぶなどの処理ができます。sort_byには&ageのような式参照を渡します。単なるフィールド名の文字列とは異なります。

原因に応じたエラー

JSONの不正、式の構文、未知の関数、引数の数、引数の型を区別して報告します。存在しないキーの参照でnullが返った場合は、構文エラーに置き換えません。

対応構文と処理上限

標準関数を持つ固定エンジン
公式jmespath.js 0.16.0に安全性のパッチを適用し、26個の標準関数を使用します。JSONPath、jq、group_by、正規表現拡張、独自関数、任意のJavaScriptには対応しません。 バッククォート内は厳密なJSONに限り、生の文字列には単一引用符を使います。式参照は関数の引数専用で、出力値にはできません。
数値は十進数の厳密計算ではない
重複キー、コメント、末尾カンマを拒否します。入力、リテラル、結果の安全でない整数やオーバーフローもエラーです。通常の小数はJavaScriptの数値で計算し、元の表記を保存しません。 sumやavgの途中の加算が安全でない整数になれば、最終的な数学上の値が安全でも拒否します。
時間と容量の制限
入力500,000文字、式2,000文字、出力2,000,000文字が上限です。構造と評価の予算も設け、Workerは2秒で停止します。上限超過時に途中までの結果を保存することはありません。
元の位置は返さない
返すのはJSON値であり、元データの正規化されたパス一覧ではありません。再帰的なJSONPath検索、入力データの書換え、CSV出力もありません。明示的なnullと欠落は同じ結果になり得ます。
ページのメモリー内だけで処理
履歴保存、URL読込、データ入りの共有リンクはありません。貼り付けた内容やファイルはブラウザー内で処理し、再読込すると現在の作業は消えます。

JMESPathテスターのよくある質問

複数の値を取得するには?

{names: people[].name, count: length(people)}のような多選択オブジェクトを使います。元の文書を書き換えず、一覧と件数を一つの戻り値にできます。

クエリ内のプロパティ名を変更するには?

people[].{label: name}ではlabelが出力名、nameが読み取るフィールドです。元のフィールドがなければ、構築したオブジェクト内の値はnullになることがあります。

ブール式で配列を絞り込むには?

people[?active == `true`].nameはactiveが真偽値trueの人物を残します。文字列の'true'とは異なります。必要に応じて論理演算子で条件を組み合わせます。

パイプ式はどう動作しますか?

people[].name | [0]は名前の一覧全体を作ってから先頭要素を選びます。渡すのはJSON値であり、シェルのコマンドを実行するものではありません。

どの関数を使えますか?

このJMESPathテスターはjmespath.js 0.16.0の標準26関数を提供し、length、sort_by、contains、sumなどを使えます。group_byや独自拡張は含みません。引数の型が合わなければエラーです。

クエリの処理に問題がありましたか?

まず短い式を試す

JMESPathテスターのサンプルで条件を一つ変更し、戻り値を確認してから実際の応答データへ進んでください。