string syntax for identifying a specific value


JSON Pointer は、RFC 6901 で定義された JSON ドキュメント内の特定の値にアクセスするため用いられる標準のポインタ構文のことです。

URI は例えば複雑なネストされた JSON データから特定要素を指し示すことなどができます。

「Uniform Resource Identifier」の略、スキーム、ホスト、パスで構成される。 JSON Pointer は URI におけるパスに相当。


JSON Pointer の用途

JSON Pointer はオブジェクトのプロパティや配列インデックスをナビゲートし、指定された値にアクセスします。

値を取り出すため、もしく値を代入する ( 上書きする ) ためのパスを記述します。

JSON は値を格納するためにキー名 ( token ) が必要になります。以下ポインタ記述サンプルをご覧ください。

"/test/json/object/array"

上記サンプルはセグメント ( / ) を 4 つ持ち、セグメントで区切られた Token でオブジェクトのプロパティや配列のインデックスを指定します。


基本的な使い方

メモリにロードされている JSON が以下内容であると定義。

{
    "sample":{
        "object"{
            "array":[1,2,3,4],
            "name": "aster",
            "year": 2024
        }
    }
}
ルート ( root ) 指定
Details

e.g.

"/"

セグメントは最低限 1 必要なので "/" という記述からスタートします。

ルート直下 “sample” を指定
Details

e.g.

"/sample"

"/sample" という記述は、ルート直下にある "sample" というオブジェクトを指定します。

データベースのルート・セグメントを省略した記述は構文エラーとなります。以下が構文エラーの例です。

Error::RootSegment
"sample/object"
配列の要素インデックスからデータを取得
Details

配列要素のインデックス値をポインタに書き込むことで、値を取り出すことができる。

"/sample/object/array/3"

サンプルでは 3 が指定されたため取得結果は array[3] == 4 です。

{
    "array":[1,2,3,4]
}

配列インデックスは 0 Based Index です。

The array index is 0 Based Index.

  • array[0] = 1
  • array[1] = 2
  • array[2] = 3

このサンプルでは値 4 が取得されます。

JSON Pointer の構文は非常にシンプルです。

JSON データを簡単に操作する強力なツールとしてぜひ活用してください。