メインコンテンツまでスキップ

json_keys

json_keys

説明

JSONオブジェクトのトップレベルのキーをJSON配列として返します。または、pathが指定されている場合は、パスからトップレベルのキーを返します。

構文

json_keys(json_doc[, path])

パラメータ

json_doc:必須。キーを返すJSONドキュメント。JSONオブジェクトである必要があります。

path:オプション。一般的には$から始まり、パスの区切り文字として.を使用します。[]は配列の添字であり、0から始まります。

返り値

JSON配列を返します。

JSONオブジェクトが空の場合は、空の配列が返されます。

JSONドキュメントがJSONオブジェクトでないか、パスがドキュメント内の値を識別しない場合は、NULLが返されます。

JSONドキュメントがJSONオブジェクトでネストされた配列の場合、pathパラメータを使用してそのオブジェクトからキーを取得できます。

例1:入力のJSONオブジェクトが空であるため、空の配列が返されます。

select json_keys('{}');
+-----------------+
| json_keys('{}') |
+-----------------+
| [] |
+-----------------+

例2:JSONオブジェクトのキーを返します。

select json_keys('{"a": 1, "b": 2, "c": 3}');
+----------------+
| json_keys('1') |
+----------------+
|["a", "b", "c"] |
+----------------+

例3:指定されたパスに一致するJSONオブジェクトのキーを返します。

select json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c');
+---------------------------------------------------------------------+
| json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') |
+---------------------------------------------------------------------+
| ["d", "e", "f"] |
+---------------------------------------------------------------------+

例4:パスが存在しません。

select json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.e');
+---------------------------------------------------------------------+
| json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.e') |
+---------------------------------------------------------------------+
| NULL |
+---------------------------------------------------------------------+

例5:JSONドキュメントはJSONオブジェクトではありません。

select json_keys('[1, 2, {"a": 1, "b": 2}]');
+---------------------------------------+
| json_keys('[1, 2, {"a": 1, "b": 2}]') |
+---------------------------------------+
| NULL |
+---------------------------------------+

例6:JSONドキュメントはJSONオブジェクトでネストされた配列です。パスが指定されている場合、そのオブジェクトからキーを取得します。

select json_keys('[0, 1, {"a": 1, "b": 2}]', '$[2]');
+-----------------------------------------------+
| json_keys('[0, 1, {"a": 1, "b": 2}]', '$[2]') |
+-----------------------------------------------+
| ["a", "b"] |
+-----------------------------------------------+