json_keys
JSON オブジェクトからトップレベルのキーを JSON 配列として返します。また、path
が指定されている場合、そのパスからトップレベルのキーを返します。
Syntax
json_keys(json_doc[, path])
Parameters
json_doc
: 必須項目。キーを返す対象の JSON ドキュメントです。JSON オブジェクトである必要があります。
path
: 任意項目。パスは一般的に $
で始まり、.
をパスの区切りとして使用します。[]
は配列の添字として使用され、0 から始まります。
Return value
JSON 配列を返します。
JSON オブジェクトが空の場合、空の配列が返されます。
JSON ドキュメントが JSON オブジェクトでない場合、またはパスがドキュメント内の値を特定しない場合、NULL
が返されます。
JSON ドキュメントが JSON オブジェクトをネストした配列である場合、path
パラメータを使用してそのオブジェクトからキーを取得できます。
Examples
例 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"] |
+-----------------------------------------------+