V MariaDB, JSON_TYPE()
je vestavěná funkce, která vrací typ hodnoty JSON jako řetězec.
Syntaxe
Syntaxe vypadá takto:
JSON_TYPE(json_val)
Kde json_val
je hodnota, pro kterou se má vrátit typ.
Typy objektů
Možné typy návratů jsou uvedeny v následující tabulce:
Typ návratu | Hodnota | Příklad |
---|---|---|
ARRAY | Pole JSON. | [1, 2, 3] |
OBJECT | Objekt JSON. | {"a":"1"} |
BOOLEAN | Literál JSON true/false. | true nebo false |
DOUBLE | Číslo s alespoň jedním desetinným místem s plovoucí desetinnou čárkou. | 1.2 |
INTEGER | Číslo bez desetinné čárky. | 1 |
NULL | JSON null doslovný. Toto je vráceno jako řetězec a nesmí být zaměňováno s SQL NULL hodnotu. | null |
STRING | Řetězec JSON. | "bird" |
Příklad
Zde je příklad k demonstraci.
SET @json = '
{
"name" : "Fluffy",
"type" : "Cat"
}
';
SELECT JSON_TYPE(@json);
Výsledek:
+------------------+ | JSON_TYPE(@json) | +------------------+ | OBJECT | +------------------+
V tomto příkladu jsem předal celý dokument JSON, který má typ OBJECT
.
Zde jsou další příklady:
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"');
Výsledek (při použití vertikálního výstupu):
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
Extrahujte hodnotu z dokumentu JSON
V předchozích příkladech jsem každou hodnotu předal přímo funkci jako literál.
Můžeme kombinovat JSON_TYPE()
s dalšími funkcemi, jako je JSON_EXTRACT()
zjistit typ hodnoty ve větším dokumentu JSON. Zde je příklad extrahování hodnoty z dokumentu JSON za účelem zjištění jeho typu:
SET @json = '
{
"name" : "Wag",
"scores" : [8, 0, 9]
}
';
SELECT
JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;
Výsledek:
+--------+ | Result | +--------+ | STRING | +--------+
Zde je další příklad, který vrací více typů:
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;
Výsledek:
+--------+-------+---------+--------+------+---------+ | a | b | c | d | e | f | +--------+-------+---------+--------+------+---------+ | STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER | +--------+-------+---------+--------+------+---------+
Nulový argument
Pokud je argument null
a poté null
je vráceno.
SELECT JSON_TYPE(null);
Výsledek:
+-----------------+ | JSON_TYPE(null) | +-----------------+ | NULL | +-----------------+
Nesprávný počet parametrů
Volání JSON_TYPE()
bez argumentu vede k chybě:
SELECT JSON_TYPE();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'
Je to stejné, když je předáno příliš mnoho argumentů:
SELECT JSON_TYPE(1, 2);
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_TYPE'