search

Found

info 概要

RFC 6901 の JSON Pointer を入力 JSON に評価し、参照先の値・リゾルブ経路・エラー理由を ~0 / ~1 エスケープ展開込みで各トークン単位に可視化。

📘 使い方

  1. 対象となる JSON ドキュメントを上の入力欄に貼り付ける
  2. 評価したい JSON Pointer を /users/0/name の形式で入力する
  3. ステータス・解決された値・リゾルブ経路をトークンごとに確認する

JSON ポインタ (RFC 6901) 評価ツール

RFC 8259 準拠の有効な JSON テキスト。オブジェクト・配列・ネスト構造に対応します。

RFC 6901 表記。例: 空文字列 (ルート全体)、/users/0/name、/meta/a~1b (a/b キー)、/meta/c~0d (c~d キー)。

ステータス
 
コピーしました!

※ ~0 → ~、~1 → /。配列インデックスは 0 以上の整数のみ。末尾 - は「最後の次の要素」を意味し、参照値は存在しません。

※ RFC 6901 規格 (2013) に準拠。Pointer は / 区切り、空ポインタ ('') はドキュメントのルートを返します。

Article

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~1bc~d というキーは /meta/c~0d と書く必要があり、頭の中だけで展開すると間違えやすい。

このツールは、入力したポインタを / で分割し、各トークンに ~1/~0~ の順でアンエスケープを適用してから JSON を再帰的に降下する。結果として「どのトークンまで降りられて、どこで止まったか」がリゾルブ経路として並ぶため、失敗したポインタの原因が一目で分かる。空ポインタ(空文字列)はドキュメントのルート全体を返す、という規格どおりの挙動も再現している。

🧐 よくある質問

Q. ~0~1 はどう違いますか? A. ~1 がスラッシュ /~0 がチルダ ~ を表す。展開は必ず ~1 を先、~0 を後の順で行うのが規格の定め。この順序を守らないと ~01 のような並びの解釈がずれるため、本ツールも ~1~0 の固定順で処理している。

Q. 配列の何番目、はどう書きますか? A. /users/0 のように 0 始まりの整数で指定する。0001 のような先頭ゼロ付きは無効。範囲外のインデックスは「見つかりません」となり、止まったトークンが経路に表示される。

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 である。