In MySQL is de JSON_EXTRACT()
functie retourneert gegevens uit een JSON-document. De daadwerkelijk geretourneerde gegevens worden bepaald door het pad dat u als argument opgeeft.
U geeft het JSON-document op als het eerste argument, gevolgd door het pad van de gegevens die moeten worden geretourneerd. U kunt ook meerdere paden opgeven om gegevens van meerdere plaatsen in het document te retourneren.
Syntaxis
De syntaxis gaat als volgt:
JSON_EXTRACT(json_doc, path[, path] ...)
Waar json_doc
is het JSON-document en path
is het pad naar de te retourneren waarde.
Als het mogelijk is dat die argumenten meerdere waarden kunnen retourneren, worden de overeenkomende waarden automatisch verpakt als een array, in de volgorde die overeenkomt met de paden die ze hebben geproduceerd.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | 2 | +--------+
In dit geval hebben we de waarde van de sleutel b
. geretourneerd .
Hier is nog een voorbeeld:
SELECT JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | "Bart" | +--------+
Voorbeeld 2 – Niet-bestaand pad
Als u een pad opgeeft dat niet bestaat, wordt een NULL-waarde geretourneerd.
SELECT JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | NULL | +--------+
U krijgt ook een NULL-waarde als een van de argumenten NULL
. is .
Voorbeeld 3 – Arrays
Hier is een voorbeeld waarin een array wordt gebruikt.
SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | 3 | +--------+
Arrays gebruiken op nul gebaseerde nummering, dus in dit geval wordt het derde element vervangen.
Hier is nog een matrixvoorbeeld. Deze keer retourneren we een waarde uit een geneste array.
SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | 4 | +--------+
Voorbeeld 4 – Meerdere paden
U kunt meer dan één pad specificeren om gegevens van meerdere plaatsen in het JSON-document te retourneren.
Basisvoorbeeld:
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | [2, 4] | +--------+
Voorbeeld 5 – Een groter JSON-document
Hier is een voorbeeld met een iets groter JSON-document.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';
Resultaat:
+---------------------------------------+ | Result | +---------------------------------------+ | ["Homer", 39, ["Eating", "Sleeping"]] | +---------------------------------------+
We kunnen indien nodig ook een specifiek element uit de array kiezen:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';
Resultaat:
+---------------------------+ | Result | +---------------------------+ | ["Homer", 39, "Sleeping"] | +---------------------------+