W MySQL JSON_KEYS()
funkcja zwraca klucze z wartości najwyższego poziomu obiektu JSON. Klucze są zwracane jako tablica JSON lub, jeśli path
podany jest argument, klucze najwyższego poziomu z wybranej ścieżki.
Podajesz dokument JSON jako argument funkcji.
Możesz również (opcjonalnie) podać drugi argument, aby określić, gdzie zaczyna się ścieżka „najwyższego poziomu” w dokumencie JSON.
Składnia
Składnia wygląda tak:
JSON_KEYS(json_doc[, path])
Gdzie json_doc
jest dokumentem JSON i path
jest opcjonalnym argumentem określającym, gdzie zaczyna się ścieżka „najwyższego poziomu” w dokumencie JSON.
Tablica wyników jest pusta, jeśli wybrany obiekt jest pusty. Jeśli wartość najwyższego poziomu zawiera zagnieżdżone podobiekty, zwracana wartość nie zawiera kluczy z tych podobiektów.
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
Wynik:
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
Oto kolejny przykład:
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
Wynik:
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
Przykład 2 – Określ ścieżkę
Oto przykład określenia ścieżki. To pozwala nam uzyskać klucze z zagnieżdżonego obiektu (zamiast ograniczać się tylko do obiektu najwyższego poziomu całego dokumentu JSON).
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
Wynik:
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
Przykład 3 – Nieistniejąca ścieżka
Jeśli określisz ścieżkę, która nie istnieje, zwracana jest wartość NULL.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | NULL | +--------+
Otrzymasz również wartość NULL, jeśli którykolwiek z argumentów ma wartość NULL
lub jeśli pierwszy argument nie jest obiektem JSON.
Przykład 4 – Tablice
Tablice nie są obiektami i nie zawierają par klucz/wartość. Dlatego otrzymasz wartość NULL, jeśli spróbujesz zwrócić klucze z tablicy.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | NULL | +--------+
Jeśli jednak którykolwiek z elementów tablicy zawiera obiekt, nadal możesz użyć path
argument, aby pobrać klucze z tego obiektu.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
Wynik:
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
Przykład 5 – Puste obiekty
Jeśli wybrany obiekt jest pusty, otrzymasz pustą tablicę.
SELECT JSON_KEYS('{}') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | [] | +--------+