JSON ポインタ (RFC 6901) 評価ツール|参照先の値とエラー理由をトークン単位で確認
RFC 6901 の JSON Pointer を入力 JSON に対して評価し、参照先の値・リゾルブ経路・エラー理由を 1 画面に表示。~0 / ~1 のエスケープ展開と配列インデックスの解決状態をトークン単位で追える、開発者向けの検証ツール。
💡 このツールについて
JSON Pointer は「JSON の中の 1 か所」を /users/0/name のような文字列で指し示す仕様。JSON Patch (RFC 6902)、JSON Schema の $ref、OpenAPI のエラー位置など実務で目にする場面は多いが、いざ手元で「このポインタは本当にその値を指すのか」を確かめようとすると意外と面倒。とくに引っかかりやすいのが、キー名に / や ~ が含まれるケース。a/b というキーは /meta/a~1b、c~d というキーは /meta/c~0d と書く必要があり、頭の中だけで展開すると間違えやすい。
このツールは、入力したポインタを / で分割し、各トークンに ~1 → /、~0 → ~ の順でアンエスケープを適用してから JSON を再帰的に降下する。結果として「どのトークンまで降りられて、どこで止まったか」がリゾルブ経路として並ぶため、失敗したポインタの原因が一目で分かる。空ポインタ(空文字列)はドキュメントのルート全体を返す、という規格どおりの挙動も再現している。
🧐 よくある質問
Q. ~0 と ~1 はどう違いますか?
A. ~1 がスラッシュ /、~0 がチルダ ~ を表す。展開は必ず ~1 を先、~0 を後の順で行うのが規格の定め。この順序を守らないと ~01 のような並びの解釈がずれるため、本ツールも ~1 → ~0 の固定順で処理している。
Q. 配列の何番目、はどう書きますか?
A. /users/0 のように 0 始まりの整数で指定する。00 や 01 のような先頭ゼロ付きは無効。範囲外のインデックスは「見つかりません」となり、止まったトークンが経路に表示される。
Q. 末尾の - は何ですか?
A. 配列の「最後の要素の次の位置」を表す予約トークン。JSON Patch で末尾に要素を追加するときに使うが、参照としては値が存在しないため、本ツールでは値なしのエラー扱いになる。
Q. キーが空文字列のメンバーは指せますか?
A. 指せる。{"":1} の値は /(スラッシュ 1 つ)で参照する。ルート全体を指す空ポインタ(何も書かない)とは別物。
Q. どのくらいの大きさの JSON を扱えますか? A. 一般的な検証用途を想定した妥当な JSON テキストに対応。巨大なログ全文ではなく、確認したい構造を切り出して貼り付けるのが快適。
📚 JSON Pointer の豆知識
JSON Pointer は 2013 年に RFC 6901 として標準化された比較的新しい仕様で、同時期に策定された JSON Patch (RFC 6902) とセットで設計された。日本国内では、API のエラーレスポンス標準である JSON:API や、設定ファイルの差分適用ツールを通じて触れる開発者が多い。
興味深いのは、JSON Pointer が XML の世界の XPath とよく比較される点。XPath が条件式や軸を持つ強力なクエリ言語であるのに対し、JSON Pointer はあくまで「1 点を指す」だけに機能を絞っている。この割り切りのおかげで実装が極めて軽く、URI フラグメント(#/components/schemas/User のような書式)にもそのまま埋め込める。OpenAPI の $ref で見慣れたあの記法も、正体は URI フラグメント化された JSON Pointer である。