厳密なJSONを用意する
貼り付けとローカルファイル読込に対応します。ファイルは500,000バイト、入力は500,000文字までです。読込、サンプル、クリアは置換のプレビュー後に適用し、一度だけ元に戻せます。 ファイルは有効なUTF-8に限ります。BOMは自動削除せず、JSON検証でエラーになります。
JSONツール
年齢による絞り込みから試せます。ボタンまたはCtrl/Cmd+Enterで実行し、変更後は再実行してください。
表示は5,000文字ずつです。コピーと保存には結果全体を含みます。
JSONと式はブラウザーのメモリー内で処理し、保存しません。
公式jmespath.js 0.16.0・安全性パッチ・標準26関数
結果が古いため、コピーと保存は無効です。
JMESPathテスターは、APIの応答から欲しい項目だけを取り出して、後続の処理へ渡す前に役立ちます。値が正しくても配列とオブジェクトを取り違えるとスクリプトが動かないため、出力の形まで確認します。
JSONデータに対して短いJMESPath式を試し、クエリ例で投影とオブジェクト構築の違いを比べてください。元の文書を変更せず、新しい戻り値を作ります。
まず条件に合う人物を残し、次に名前だけを取り出します。投影ではnullになった項目が省かれるため、入力と出力の要素数が同じとは限りません。位置を保ちたい場合は多選択リストも検討してください。
名前の一覧と人数を一つのオブジェクトにまとめたり、属性で並べ替えたりできます。JMESPathテスターで出力を見れば、後続処理が期待するキーと型になっているかを確かめられます。
貼り付けとローカルファイル読込に対応します。ファイルは500,000バイト、入力は500,000文字までです。読込、サンプル、クリアは置換のプレビュー後に適用し、一度だけ元に戻せます。 ファイルは有効なUTF-8に限ります。BOMは自動削除せず、JSON検証でエラーになります。
自動実行はありません。Ctrl/Cmd+Enterも利用できます。クエリ例を選ぶと式だけが変わり、前の結果は古い状態になります。新しい実行が成功するまでコピーと保存は無効です。
null、false、0、空文字列、[]はいずれも正常な結果になり得ます。表示は5,000文字ずつ増やせますが、コピーとダウンロードには受理された結果全体が含まれます。
people[?age >= `18`].nameは年齢を比較して名前を返します。数値リテラルはバッククォートで囲みます。数字を含む文字列と数値は別の型であり、自動的に同一視されません。
{names: people[].name, count: length(people)}のように戻り値へ名前を付けられます。多選択リストは投影とは異なり、nullを要素として残せるため、位置が重要な処理に使えます。
左側の結果全体を右側に渡して、抽出後に先頭要素を選ぶなどの処理ができます。sort_byには&ageのような式参照を渡します。単なるフィールド名の文字列とは異なります。
JSONの不正、式の構文、未知の関数、引数の数、引数の型を区別して報告します。存在しないキーの参照でnullが返った場合は、構文エラーに置き換えません。
{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や独自拡張は含みません。引数の型が合わなければエラーです。
クエリの処理に問題がありましたか?