JSON Pointer(RFC 6901)で値を参照する
JSON Pointer は、スラッシュ区切りのパストークンで JSON ドキュメント内の特定の値を指し示す文字列構文を定めます。
- 1
JSON Pointer (RFC 6901) は、パストークンの区切りに "/" を使い、キー内の "/" と "~" のエスケープに "~1" と "~0" を使います。例えば "/foo/bar" は root.foo.bar を指します。空文字列 "" はルートを指します。JSON Patch と JSON Schema の基盤となる仕様です。
- 2 JSONPath クエリツール →
JSON ドキュメントに対して JSON Pointer 式を評価します。ポインタ (例: "/users/0/name") と JSON を入力すると、参照される値を抽出できます。検証やデータ抽出に役立ちます。
- 3 JSON バリデーター →
ポインタを適用する前に JSON ドキュメントを検証します。存在しないパスへのポインタは、実装次第で null を返すかエラーを発生させます。先に検証しておけば、明確なエラーメッセージが得られます。
- 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 の操作では重要です。
このタスクを解決するワークフロー
命名ケース変換と JSON 検証
識別子を対象の命名規則に変換し、構造を確認するために出力を JSON として検証する。 パイプライン
JS フォーマットと JSON 検証
JS コードをフォーマットし、その後 JSON として検証する。 パイプライン
JSON のミニファイと検証
検査のために JSON をフォーマットし、1 パスで構文的に正しいことを検証する。 パイプライン
JSON Schema 生成と検証
サンプルデータから JSON Schema を生成し、それに対して検証する。 パイプライン
YAML の検証とフォーマット
YAML を JSON に変換して構造を検証し、その後 JSON が well-formed であることを確認する。 パイプライン