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"] |
+-----------------------------------------------+