Při používání MySQL můžete použít JSON_VALID()
funkce pro testování, zda řetězcový výraz obsahuje platný JSON.
Pokud výraz obsahuje platný JSON, JSON_VALID()
vrátí 1
, jinak vrátí 0
.
Syntaxe
Syntaxe vypadá takto:
JSON_VALID(val)
Kde val
je hodnota, pro kterou testujete platný JSON.
Příklad 1 – platný JSON
Zde je příklad demonstrující, co se stane, když řetězec obsahuje platný JSON.
SELECT JSON_VALID('{"Name": "Bart"}') AS Result;
Výsledek:
+--------+ | Result | +--------+ | 1 | +--------+
Příklad 2 – Neplatný JSON
Zde je příklad, který demonstruje, co se stane, když řetězec není obsahovat platný JSON.
SELECT JSON_VALID('Name: Bart') AS Result;
Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
Příklad 3 – Příklad databáze
V tomto databázovém dotazu jsou výsledky vráceny pouze tam, kde je Collections.Contents
sloupec obsahuje platný JSON.
Tento konkrétní sloupec používá datový typ json
k uložení dokumentu JSON.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 1;
Výsledek:
+------------+ | Contents | |------------| | [ { "ArtistName": "AC/DC", "Albums": [ { "AlbumName": "Powerage" } ] }, { "ArtistName": "Devin Townsend", "Albums": [ { "AlbumName": "Ziltoid the Omniscient" }, { "AlbumName": "Casualties of Cool" }, { "AlbumName": "Epicloud" } ] }, { "ArtistName": "Iron Maiden", "Albums": [ { "AlbumName": "Powerslave" }, { "AlbumName": "Somewhere in Time" }, { "AlbumName": "Piece of Mind" }, { "AlbumName": "Killers" }, { "AlbumName": "No Prayer for the Dying" } ] } ] | +------------+
Zde je to, co se stane, pokud změníme příkaz tak, aby vracel data pouze v případě, že isn't
platný JSON.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 0;
Výsledek:
Empty set (0.00 sec)