В MySQL, JSON_KEYS()
функцията връща ключове от стойността на най-високото ниво на JSON обект. Ключовете се връщат като JSON масив или, ако е path
е даден аргумент, ключовете от най-високо ниво от избрания път.
Вие предоставяте JSON документа като аргумент на функцията.
Можете също (по избор) да предоставите втори аргумент, за да посочите откъде започва пътят на „най-високо ниво“ в JSON документа.
Синтаксис
Синтаксисът е така:
JSON_KEYS(json_doc[, path])
Където json_doc
е JSON документът и path
е незадължителен аргумент, за да се определи къде започва пътят от „горно ниво“ в JSON документа.
Резултатът е празен, ако избраният обект е празен. Ако стойността от най-високо ниво има вложени подобекти, върнатата стойност не включва ключове от тези подобекти.
Пример 1 – Основна употреба
Ето пример за демонстрация.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
Резултат:
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
Ето още един пример:
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
Резултат:
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
Пример 2 – Посочете път
Ето пример за посочване на път. Това ни позволява да получим ключовете от вложен обект (вместо да бъдем ограничени само до обекта от най-високо ниво на целия JSON документ).
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
Резултат:
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
Пример 3 – Несъществуващ път
Ако посочите път, който не съществува, се връща стойност NULL.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | NULL | +--------+
Освен това ще получите стойност NULL, ако някой от аргументите е NULL
или ако първият аргумент не е JSON обект.
Пример 4 – Масиви
Масивите не са обекти и не съдържат двойки ключ/стойност. Следователно, вие ще получите стойност NULL, ако се опитате да върнете ключове от масив.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | NULL | +--------+
Въпреки това, ако някой от елементите на масива съдържа обект, все още можете да използвате path
аргумент за получаване на ключовете от този обект.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
Резултат:
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
Пример 5 – Празни обекти
Ако избраният обект е празен, ще получите празен масив.
SELECT JSON_KEYS('{}') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | [] | +--------+