I MySQL, JSON_KEYS()
funktion returnerar nycklar från toppnivåvärdet för ett JSON-objekt. Nycklarna returneras som en JSON-array, eller, om en path
argumentet ges, nycklarna på översta nivån från den valda sökvägen.
Du tillhandahåller JSON-dokumentet som ett argument till funktionen.
Du kan också (valfritt) tillhandahålla ett andra argument för att ange var "top-level"-sökvägen börjar inifrån JSON-dokumentet.
Syntax
Syntaxen ser ut så här:
JSON_KEYS(json_doc[, path])
Där json_doc
är JSON-dokumentet och path
är ett valfritt argument för att avgöra var "top-level"-sökvägen börjar i JSON-dokumentet.
Resultatmatrisen är tom om det valda objektet är tomt. Om värdet på toppnivån har kapslade underobjekt, inkluderar returvärdet inte nycklar från dessa underobjekt.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
Resultat:
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
Här är ett annat exempel:
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
Resultat:
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
Exempel 2 – Ange en sökväg
Här är ett exempel på hur du anger en sökväg. Detta gör att vi kan hämta nycklarna från ett kapslat objekt (istället för att vara begränsat till bara toppnivåobjektet i hela JSON-dokumentet).
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
Resultat:
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
Exempel 3 – Icke-existerande sökväg
Om du anger en sökväg som inte finns returneras ett NULL-värde.
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | NULL | +--------+
Du får också ett NULL-värde om något av argumenten är NULL
eller om det första argumentet inte är ett JSON-objekt.
Exempel 4 – Arrayer
Matriser är inte objekt och de innehåller inte nyckel-/värdepar. Därför får du ett NULL-värde om du försöker returnera nycklar från en array.
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | NULL | +--------+
Men om något av arrayens element innehåller ett objekt kan du fortfarande använda path
argument för att hämta nycklarna från det objektet.
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
Resultat:
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
Exempel 5 – Tomma objekt
Om det valda objektet är tomt får du en tom array.
SELECT JSON_KEYS('{}') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | [] | +--------+