AZ Tools

JSON ポインタ リゾルバ (RFC 6901)

開発

JSON ポインタは、/user/roles/0 のようなスラッシュ区切りパスで JSON 文書内の 1 つの値を指す標準(RFC 6901)の方法です。JSON Schema の $ref、JSON Patch、JSON Merge Patch、多くの OpenAPI ツールが内部で使っています。文書とポインタを貼り付けると、どの値を選ぶかを整形表示します。リゾルバは仕様を正確に実装します:空ポインタは文書全体を返し、~1 はリテラルのスラッシュ、~0 はリテラルのチルダを意味し(したがって "a/b" キーは /a~1b で到達)、配列インデックスは 0 か先頭ゼロなしの符号なし整数でなければならず、特殊トークン "-" は読み取り時に値を持ちません。URI フラグメントポインタ(#/user/roles/0)も受け付けてパーセントデコードします。さらに文書内の全ポインタを値プレビュー付きで一覧表示し、クリックで任意ノードへの正確なパスを見つけられます。すべてローカルで動作し、アップロードされません。

解決された値

"admin"

この文書のポインタ(クリックで使用)

(ルート){…} (3)
/user{…} (3)
/user/id42
/user/name"Ada"
/user/roles[…] (2)
/user/roles/0"admin"
/user/roles/1"editor"
/a~1b"slash in key"
/settings{…} (2)
/settings/theme"dark"
/settings/limits{…} (1)
/settings/limits/max100

空ポインタ = 文書全体。キーの / は ~1、~ は ~0 でエスケープ。#/a/b のような URI フラグメントも可。

使い方

  1. JSON 文書を貼り付けるか編集。
  2. JSON ポインタを入力(例:/user/name または #/settings/limits/max)するか、ポインタ一覧の行をクリック。
  3. 解決された値を読みます。キー内のスラッシュは ~1、チルダは ~0 でエスケープします。

よくある質問

JSON ポインタは JSONPath とどう違いますか?
JSON ポインタ(RFC 6901)は単純なスラッシュ区切りパスでちょうど 1 つの値を指し、JSON Schema・JSON Patch・OpenAPI が使います。JSONPath はワイルドカード・フィルタ・再帰下降で複数の値にマッチできるクエリ言語です。前者には本ツールを、後者には JSONPath テスターを使ってください。
~0 と ~1 とは?
/ がトークンを区切り、~ がエスケープ文字なので、キー内のリテラル / は ~1、リテラル ~ は ~0 と書きます。したがって "a/b" メンバーは /a~1b、"m~n" は /m~0n で到達します。アンエスケープ時は ~1 を ~0 より先に置換します。RFC の要求どおりです。
空ポインタは何を返しますか?
空文字列は文書全体を指す有効なポインタなので、JSON 値全体を返します。"/" は空ではありません — 空文字列トークンを 1 つ持つポインタで、キーが空文字列のメンバーを選びます。
なぜポインタの解決に失敗したのですか?
よくある理由:メンバーや配列インデックスが存在しない、配列インデックスに先頭ゼロがある(0, 1, 2… のみ有効、パディング不可)、"-" を使った(読み取り時に値なし)、または空でないポインタが / で始まっていない。エラーメッセージが失敗したトークンを正確に示します。

関連ツール