In MariaDB, JSON_TYPE()
is een ingebouwde functie die het type JSON-waarde als een tekenreeks retourneert.
Syntaxis
De syntaxis gaat als volgt:
JSON_TYPE(json_val)
Waar json_val
is de waarde waarvoor het type moet worden geretourneerd.
Objecttypen
De mogelijke retourtypes staan vermeld in de volgende tabel:
Retourtype | Waarde | Voorbeeld |
---|---|---|
ARRAY | JSON-array. | [1, 2, 3] |
OBJECT | JSON-object. | {"a":"1"} |
BOOLEAN | JSON waar/onwaar letterlijk. | true of false |
DOUBLE | Een getal met ten minste één decimaal met drijvende komma. | 1.2 |
INTEGER | Een getal zonder drijvende komma decimaal. | 1 |
NULL | JSON null letterlijk. Dit wordt geretourneerd als een tekenreeks en moet niet worden verward met de SQL NULL waarde. | null |
STRING | JSON-tekenreeks. | "bird" |
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SET @json = '
{
"name" : "Fluffy",
"type" : "Cat"
}
';
SELECT JSON_TYPE(@json);
Resultaat:
+------------------+ | JSON_TYPE(@json) | +------------------+ | OBJECT | +------------------+
In dit voorbeeld heb ik een heel JSON-document doorgegeven, met het type OBJECT
.
Hier zijn meer voorbeelden:
SELECT
JSON_TYPE('[1, 2, 3]'),
JSON_TYPE('{ "a" : 1 }'),
JSON_TYPE('true'),
JSON_TYPE('false'),
JSON_TYPE(10.59),
JSON_TYPE(10),
JSON_TYPE(null),
JSON_TYPE('"Fuzzy Smith"');
Resultaat (met verticale uitvoer):
JSON_TYPE('[1, 2, 3]'): ARRAY JSON_TYPE('{ "a" : 1 }'): OBJECT JSON_TYPE('true'): BOOLEAN JSON_TYPE('false'): BOOLEAN JSON_TYPE(10.59): DOUBLE JSON_TYPE(10): INTEGER JSON_TYPE(null): NULL JSON_TYPE('"Fuzzy Smith"'): STRING
De waarde extraheren uit een JSON-document
In de vorige voorbeelden heb ik elke waarde als een letterlijke waarde rechtstreeks aan de functie doorgegeven.
We kunnen JSON_TYPE()
combine combineren met andere functies, zoals JSON_EXTRACT()
om het type waarde binnen een groter JSON-document te achterhalen. Hier is een voorbeeld van het extraheren van een waarde uit een JSON-document om het type te achterhalen:
SET @json = '
{
"name" : "Wag",
"scores" : [8, 0, 9]
}
';
SELECT
JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;
Resultaat:
+--------+ | Result | +--------+ | STRING | +--------+
Hier is nog een voorbeeld dat meer typen retourneert:
SET @json = '
{
"name" : "Wag",
"scores" : [8, 0, 9],
"weight" : 10.50,
"height" : null,
"age" : 4
}
';
SELECT
JSON_TYPE(
JSON_EXTRACT(@json, '$.name')
) AS a,
JSON_TYPE(
JSON_EXTRACT(@json, '$.scores')
) AS b,
JSON_TYPE(
JSON_EXTRACT(@json, '$.scores[0]')
) AS c,
JSON_TYPE(
JSON_EXTRACT(@json, '$.weight')
) AS d,
JSON_TYPE(
JSON_EXTRACT(@json, '$.height')
) AS e,
JSON_TYPE(
JSON_EXTRACT(@json, '$.age')
) AS f;
Resultaat:
+--------+-------+---------+--------+------+---------+ | a | b | c | d | e | f | +--------+-------+---------+--------+------+---------+ | STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER | +--------+-------+---------+--------+------+---------+
Nullargument
Als het argument null
is , dan null
wordt geretourneerd.
SELECT JSON_TYPE(null);
Resultaat:
+-----------------+ | JSON_TYPE(null) | +-----------------+ | NULL | +-----------------+
Onjuist aantal parameters
Aanroepen van JSON_TYPE()
zonder een argument resulteert in een fout:
SELECT JSON_TYPE();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'
Het is hetzelfde als er te veel argumenten worden doorgegeven:
SELECT JSON_TYPE(1, 2);
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'