JSONPath
jsonpathは、JSONデータを問い合わせるためのPostgreSQLのSQL/JSONパス言語のサポートを実装しています。 これは、SQL/JSON クエリ関数でさらに処理するために、パス・エンジンが JSON データから取得する項目を指定する、解析された SQL/JSON パス式のバイナリ表現を提供します。 SQL/JSONのパス述語と演算子のセマンティクスは、一般的にSQLに従う。 SQL/JSONパス構文は、JavaScriptの規約の一部を使用している:- 会員アクセスにはドット(
.)が使用される。 - 角括弧(
[])は配列アクセスに使用される。 - SQL/JSON配列は0相対です(通常のSQL配列は1から始まります)。
- 二重引用符で囲まなければならない。
- バックスラッシュ・エスケープは、タイプしにくい文字を表すために使用される。
\" と入力しなければならない。 バックスラッシュを取得するには、'\\ と入力しなければならない。- さまざまなASCII制御文字
\b\f\n\r\t\v
- 4-6桁のコードポイントで識別されるUnicode文字の場合
\uNNNN
- 16進数2桁で書かれた文字コードの場合
\xNN
- 1桁から6桁の16進数で書かれた文字コードの場合
\u{N...}
- JSONプリミティブ型のパス・リテラル:Unicode text、numeric、true、false、null。
- パス変数。
- アクセサ演算子。
jsonpath演算子やメソッドを使用して、フィルター式を指定したり、パスの評価順序を定義したりすることができる。
jsonpath変数
- $
- クエリーされるJSONテキスト(コンテキスト・アイテム)を表す変数。
- ヴァーネーム
- 名前付き変数。 この値は、いくつかのJSON処理関数のパラメータ'
varsで設定できる。 - @
- フィルター式におけるパスの評価結果を表す変数。
jsonpathアクセサ
- キー
- ."$varname"
- 指定されたキーを持つオブジェクト・メンバーを返すメンバー・アクセッサ。 キー名が$で始まる名前付き変数であるか、JavaScriptの識別子の規則を満たさない場合は、文字列リテラルとして二重引用符で囲む必要があります。
- .*
- 現在のオブジェクトの最上位レベルにあるすべてのメンバの値を返すワイルドカード・メンバ・アクセッサ。
- .**
- 現在のオブジェクトの JSON 階層のすべてのレベルを処理し、入れ子レベルに関係なくすべてのメンバ値を返す、再帰的ワイルドカード・メンバ・アクセッサ。 これは標準SQL/JSONのPostgreSQL拡張です。
- .**{level}
- .**{start_level to end_level}
- .**と同じ、 しかし、JSON階層の入れ子レベルに対するフィルターがある。 入れ子のレベルは整数で指定する。 ゼロレベルは現在のオブジェクトに対応する。 最下位のネスティング・レベルにアクセスするには、lastキーワードを使う。 これは標準SQL/JSONのPostgreSQL拡張です。
- [添え字、...]
- 配列要素アクセサ。
subscriptは、'indexまたは 'start_indexから 'end_indexの2つの形で与えられる。 最初の形式は、配列の1つの要素をそのインデックスで返します。 2番目の形式は、与えられた'start_indexと'end_indexに対応する要素を含む、インデックスの範囲によってスライスされた配列を返す。 - [*]
- すべての配列要素を返すワイルドカード配列要素アクセサ。
SQL/JSONパス言語
XPath式が「SQLXMLアクセスに使われるのと同様に、「SQLJSONパス式は、「JSONデータからどの項目を取り出すかを指定する。
PostgreSQL,パス式は'jsonpathデータ型として実装されています。 jsonpathに記述されている要素を使用することができる。
JSONクエリ関数と演算子は、指定されたパス式を評価のためにパスエンジンに渡します。 式がクエリされたJSONデータにマッチする場合、対応するSQL/JSON項目が返されます。
パス式はSQL/JSONパス言語で記述されます。 算術式や関数を含むことができる。 クエリー関数はこのような式をテキスト文字列として扱うため、指定する式はシングルクォートで囲む必要があります。
パス表現は、'jsonpath で許可される一連の要素で構成される。 パス表現は左から右に評価される。 括弧を使って操作の順序を変えることができる。 評価に成功すると、SQL/JSONシーケンスが生成される。 評価結果は、指定された計算を完了するJSONクエリ関数に返される。
コンテキスト・アイテム(照会するJSONデータ)を参照するには、パス式で「$記号を使用します。 この記号の後に、1つ以上のjsonpathアクセサを付けることができる。 JSON構造をレベルごとに下っていき、コンテキスト・アイテムの内容を取得する。 それに続く各演算子は、前の評価ステップの結果を扱う。
jsonpath演算子とメソッドの詳細については、jsonpathを参照のこと