I MySQL er JSON_KEYS()
funktion returnerer nøgler fra topniveauværdien af et JSON-objekt. Nøglerne returneres som et JSON-array, eller, hvis en path
argumentet er givet, nøglerne på øverste niveau fra den valgte sti.
Du angiver JSON-dokumentet som et argument til funktionen.
Du kan også (valgfrit) angive et andet argument for at angive, hvor "top-level"-stien starter inde fra JSON-dokumentet.
Syntaks
Syntaksen ser sådan ud:
JSON_KEYS(json_doc[, path])
Hvor json_doc
er JSON-dokumentet og path
er et valgfrit argument til at bestemme, hvor "top-level"-stien starter i JSON-dokumentet.
Resultatarrayet er tomt, hvis det valgte objekt er tomt. Hvis værdien på øverste niveau har indlejrede underobjekter, inkluderer returværdien ikke nøgler fra disse underobjekter.
Eksempel 1 – Grundlæggende brug
Her er et eksempel til at demonstrere.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
Resultat:
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
Her er et andet eksempel:
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
Resultat:
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
Eksempel 2 – Angiv en sti
Her er et eksempel på at angive en sti. Dette giver os mulighed for at hente nøglerne fra et indlejret objekt (i stedet for at være begrænset til kun objektet på øverste niveau i hele JSON-dokumentet).
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
Resultat:
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
Eksempel 3 – Ikke-eksisterende sti
Hvis du angiver en sti, der ikke eksisterer, returneres en NULL-værdi.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | NULL | +--------+
Du får også en NULL-værdi, hvis nogle af argumenterne er NULL
eller hvis det første argument ikke er et JSON-objekt.
Eksempel 4 – Arrays
Arrays er ikke objekter, og de indeholder ikke nøgle/værdi-par. Derfor får du en NULL-værdi, hvis du forsøger at returnere nøgler fra et array.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | NULL | +--------+
Men hvis nogle af arrayets elementer indeholder et objekt, kan du stadig bruge path
argument for at hente nøglerne fra det objekt.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
Resultat:
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
Eksempel 5 – Tomme objekter
Hvis det valgte objekt er tomt, får du et tomt array.
SELECT JSON_KEYS('{}') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | [] | +--------+