V MariaDB, JSON_VALUE()
je vestavěná funkce, která vrací skalární hodnotu z dokumentu JSON. Přesněji řečeno, vrací skalár určený zadanou cestou.
Syntaxe
Syntaxe vypadá takto:
JSON_VALUE(json_doc, path)
Kde json_doc
je dokument JSON a path
je cesta v dokumentu.
Příklad
Zde je příklad k demonstraci.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_VALUE(@json_document, '$.name');
Výsledek:
+--------------------------------------+| JSON_VALUE(@json_document, '$.name') |+------------------------------------- -+| Wag |+--------------------------------------+
Neexistující cesta
Předání cesty, která v dokumentu JSON neexistuje, má za následek NULL
.
Příklad:
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_VALUE(@json_document, '$.color');
Výsledek:
+---------------------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------+
Pole
Zde je příklad vrácení dat z pole:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_VALUE(@json_document, '$.awards[1]');
Výsledek:
+-------------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------- ---------+| Nejlepší pes |+-------------------------------------------+Pole jsou založeny na nule, a proto
$.awards[1]
extrahuje druhý prvek zawards
pole.Vnořené objekty
Zde je příklad získání hodnoty z objektu vnořeného do jiného objektu:
SET @json_document = ' { "_id" : 1, "name" : "Wag", "details" : { "type" : "Dog", "weight" : 20, "awards" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" } } } '; SELECT JSON_VALUE( @json_document, '$.details.awards.Florida Dog Awards' ) AS Result;
Výsledek:
+----------+| Výsledek |+----------+| Top Dog |+---------+Neskalární hodnoty
Pokus o vrácení neskalární hodnoty (např. objekt nebo pole) vrátí
NULL
.Příklad:
SET @json_document = ' { "_id" : 1, "name" : "Wag", "details" : { "type" : "Dog", "weight" : 20, "awards" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" } } } '; SELECT JSON_VALUE( @json_document, '$.details.awards' ) AS Result;
Výsledek:
+---------+| Výsledek |+--------+| NULL |+--------+Chcete-li vrátit neskalární hodnotu, použijte
JSON_QUERY()
neboJSON_EXTRACT()
funkce.Nulové argumenty
Pokud je některý argument
NULL
, výsledkem jeNULL
:SELECT JSON_VALUE(null, '$.type'), JSON_VALUE('{"a":1}', null);
Výsledek:
+----------------------------+----------------- ------------+| JSON_VALUE(null, '$.type') | JSON_VALUE('{"a":1}', null) |+----------------------------+----- -------------------------+| NULL | NULL |+----------------------------+------------------ -----------+Nesprávný počet parametrů
Pokud neposkytnete žádné argumenty, dojde k chybě:
SELECT JSON_VALUE();
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'JSON_VALUE'Je to stejné, když poskytnete příliš málo nebo příliš mnoho argumentů:
SELECT JSON_VALUE('{ "a": 1}');
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'JSON_VALUE'