コンテンツへスキップ
uencoder

JSON Pointer(RFC 6901)で値を参照する

JSON Pointer は、スラッシュ区切りのパストークンで JSON ドキュメント内の特定の値を指し示す文字列構文を定めます。

  1. 1

    JSON Pointer (RFC 6901) は、パストークンの区切りに "/" を使い、キー内の "/" と "~" のエスケープに "~1" と "~0" を使います。例えば "/foo/bar" は root.foo.bar を指します。空文字列 "" はルートを指します。JSON Patch と JSON Schema の基盤となる仕様です。

  2. 2
    JSONPath クエリツール →

    JSON ドキュメントに対して JSON Pointer 式を評価します。ポインタ (例: "/users/0/name") と JSON を入力すると、参照される値を抽出できます。検証やデータ抽出に役立ちます。

  3. 3
    JSON バリデーター →

    ポインタを適用する前に JSON ドキュメントを検証します。存在しないパスへのポインタは、実装次第で null を返すかエラーを発生させます。先に検証しておけば、明確なエラーメッセージが得られます。

  4. 4

    JSON Pointer と JSONPath の違い:JSON Pointer はよりシンプルで (スラッシュ区切りのパスのみ、フィルタやワイルドカードなし)、標準化されています (RFC 6901)。JSONPath ($.store.book[*].author のような形式) はより表現力が高いものの、標準化されていません。単純な参照や JSON Patch には JSON Pointer を、複雑なクエリには JSONPath を使ってください。

よくある質問

JSON Pointer で特殊文字をエスケープするにはどうすればよいですか?
パストークン内で "/" には "~1" を、"~" には "~0" を使います。例えばキー "a/b" を参照するには "/a~1b" とします。エスケープはまずチルダ、次にスラッシュの順で行われるため、"~01" は "/" ではなく "~1" にデコードされます。
空の JSON Pointer とは何ですか?
空文字列 "" はドキュメント全体 (ルート) を指します。これは "/" とは異なり、"/" は "" という名前のキー (空文字列キー) を指します。この区別は JSON Patch の操作では重要です。

このタスクを解決するワークフロー

関連ツール