In MariaDB JSON_TYPE()
ist eine integrierte Funktion, die den Typ eines JSON-Werts als Zeichenfolge zurückgibt.
Syntax
Die Syntax sieht so aus:
JSON_TYPE(json_val)
Wobei json_val
ist der Wert, für den der Typ zurückgegeben werden soll.
Objekttypen
Die möglichen Rückgabetypen sind in der folgenden Tabelle aufgelistet:
Rückgabetyp | Wert | Beispiel |
---|---|---|
ARRAY | JSON-Array. | [1, 2, 3] |
OBJECT | JSON-Objekt. | {"a":"1"} |
BOOLEAN | JSON-Wahr/Falsch-Literal. | true oder false |
DOUBLE | Eine Zahl mit mindestens einer Gleitkommazahl. | 1.2 |
INTEGER | Eine Zahl ohne Gleitkommazahl. | 1 |
NULL | JSON null wörtlich. Dieser wird als String zurückgegeben und ist nicht mit dem SQL NULL zu verwechseln Wert. | null |
STRING | JSON-String. | "bird" |
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SET @json = '
{
"name" : "Fluffy",
"type" : "Cat"
}
';
SELECT JSON_TYPE(@json);
Ergebnis:
+------------------+ | JSON_TYPE(@json) | +------------------+ | OBJECT | +------------------+
In diesem Beispiel habe ich ein ganzes JSON-Dokument übergeben, das den Typ OBJECT
hat .
Hier sind weitere Beispiele:
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"');
Ergebnis (bei vertikaler Ausgabe):
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
Extrahieren Sie den Wert aus einem JSON-Dokument
In den vorherigen Beispielen habe ich jeden Wert direkt als Literal an die Funktion übergeben.
Wir können JSON_TYPE()
kombinieren mit anderen Funktionen wie JSON_EXTRACT()
um den Typ eines Werts innerhalb eines größeren JSON-Dokuments herauszufinden. Hier ist ein Beispiel für das Extrahieren eines Werts aus einem JSON-Dokument, um seinen Typ herauszufinden:
SET @json = '
{
"name" : "Wag",
"scores" : [8, 0, 9]
}
';
SELECT
JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;
Ergebnis:
+--------+ | Result | +--------+ | STRING | +--------+
Hier ist ein weiteres Beispiel, das mehr Typen zurückgibt:
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;
Ergebnis:
+--------+-------+---------+--------+------+---------+ | a | b | c | d | e | f | +--------+-------+---------+--------+------+---------+ | STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER | +--------+-------+---------+--------+------+---------+
Null-Argument
Wenn das Argument null
ist , dann null
zurückgegeben wird.
SELECT JSON_TYPE(null);
Ergebnis:
+-----------------+ | JSON_TYPE(null) | +-----------------+ | NULL | +-----------------+
Falsche Parameteranzahl
Aufruf von JSON_TYPE()
ohne Argument führt zu einem Fehler:
SELECT JSON_TYPE();
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'
Das Gleiche gilt, wenn zu viele Argumente übergeben werden:
SELECT JSON_TYPE(1, 2);
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'