コンテンツへスキップ

JSON Pointer テスター & ビルダー

ドキュメントと /items/0/name のようなポインターを貼り付けてください。名前にスラッシュやチルダが含まれるときはセグメントビルダーを使います。

ブラウザ内でローカルに実行
1ドキュメント2ポインター3解決された値

ドキュメントRFC 6901

JSON Pointer を解決し、パスセグメントから組み立てる方法

RFC 6901 の JSON Pointer を JSON ドキュメントに対して解決し、選ばれた値・デコード済みのパスセグメント・値の型を表示します。ポインターは空文字列(ドキュメント全体を選択)か、スラッシュで区切ったセグメント列です。たとえば /users/0/name は users 配列の先頭要素に入り、その name を読みます。

セグメントビルダーは逆方向の処理です。1 行に 1 セグメントを入力すると、エスケープ済みのポインターに組み立てます。名前にスラッシュやチルダが含まれていても ~1 と ~0 に変換されるため、パスが壊れません。処理はすべてページ内で完結し、コピーで解決値をクリップボードに移せます。

  1. Document パネルに JSON ドキュメントを貼り付けるか、Load example で、名前にスラッシュを含むキーが入った小さな users 配列から始めます。
  2. Pointer 欄にポインターを入力します。空かスラッシュで始まる必要があり、#/users/0/name の形式は URI フラグメントとして受け付けて、セグメントを読む前にパーセントデコードします。
  3. Resolve pointer を押します。Resolved value パネルには選ばれた値(文字列はそのまま、オブジェクトと配列は整形)が表示され、Decoded path tokens には各セグメントと位置、空のポインターなら (document root) が並びます。
  4. 出力の上にある 3 つの指標(セグメント数・値の型・解決できたか)を確認します。ドキュメントの外に出るポインターは、近い値を返さず「見つかりません」として報告されます。
  5. ポインターを組み立てるときは Path segments に 1 行 1 セグメントを入力し、Build from segments を押します。空行は捨てられ、エスケープ済みのポインターが Pointer 欄に書き戻されます。Clear は両パネル・セグメント・指標・状態メッセージを初期化します。

各パネルの表示内容とポインターの規則

セグメント・エスケープ・URI フラグメント

ポインターはスラッシュで分割され、先頭のスラッシュは開始位置を示すだけです。//empty は名前が空文字列のプロパティを、/a~1b はキー a/b を指します。エスケープはスラッシュが ~1、チルダが ~0 の 2 つだけで、チルダの後ろが 0 でも 1 でもない場合(ポインターの末尾を含む)は、リテラルとして読まずにエラーで拒否します。

URI フラグメント形式も使えます。#/users/0/name とパーセントエンコードした #%2Fusers%2F1%2Fname は同じセグメントになり、#/a%20b はキー a b を読みます。ポインターの前後の空白は解析前に取り除かれるため、/a の後ろの空白は無視されます。

配列・値の型・見つからない結果

配列の位置は RFC 6901 に厳密に従います。セグメントがインデックスとして扱われるのは 0 か、先頭に 0 を付けない数字列のときだけです。/arr/1 は 2 番目の要素を選び、/arr/01・/arr/-・配列の末尾を超えるインデックスは見つかりません。JSON Patch で配列の末尾を表すハイフンは、ここでは読み取れる値ではありません。

オブジェクトは独自プロパティ名の完全一致で照合するため、空白や Unicode を含むキー、__proto__ のような名前もほかのキーと同じように解決されます。ワイルドカードや検索はありません。値は型に応じて表示され、文字列はそのまま、数値と真偽値は JSON として、null は null として、オブジェクトと配列は整形され、指標に値の型と解決状況が出ます。

ポインターの組み立て・プライバシー・制限

セグメントからの組み立てでは、各行を個別にエスケープし、スラッシュで連結します。~ を ~0 に置き換えてから / を ~1 にする、RFC 6901 が求める順序です。リストが空ならドキュメント全体を選ぶ空のポインターになり、ドキュメント側が空のときはポインターを書き込んで「セグメントから組み立てた」と伝えるだけで、値をでっち上げません。

解決・組み立て・サンプル・コピーはどれもブラウザー内で動き、ネットワークリクエストを送りません。オフラインでも、外部に出せないデータでも使えます。画面に値がない間はコピーも動きません。JSON が不正、エスケープが不正、ポインターが見つからない場合は、直前の値が消去されているため誤ってコピーされることはありません。

最近使ったツール: