Używając MySQL, możesz użyć JSON_VALID()
funkcja do sprawdzenia, czy wyrażenie tekstowe zawiera prawidłowy JSON.
Jeśli wyrażenie zawiera prawidłowy JSON, JSON_VALID()
zwraca 1
, w przeciwnym razie zwraca 0
.
Składnia
Składnia wygląda tak:
JSON_VALID(val)
Gdzie val
to wartość, dla której testujesz prawidłowy JSON.
Przykład 1 – prawidłowy JSON
Oto przykład pokazujący, co się dzieje, gdy ciąg zawiera prawidłowy JSON.
SELECT JSON_VALID('{"Name": "Bart"}') AS Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Przykład 2 – Nieprawidłowy JSON
Oto przykład pokazujący, co się dzieje, gdy ciąg nie zawierać prawidłowy JSON.
SELECT JSON_VALID('Name: Bart') AS Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Przykład 3 – Przykład bazy danych
W tym zapytaniu do bazy danych wyniki są zwracane tylko wtedy, gdy Collections.Contents
kolumna zawiera poprawny JSON.
Ta konkretna kolumna używa typu danych json
do przechowywania dokumentu JSON.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 1;
Wynik:
+------------+ | 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" } ] } ] | +------------+
Oto, co się stanie, jeśli zmienimy instrukcję, aby zwracała dane tylko wtedy, gdy isn't
prawidłowy JSON.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 0;
Wynik:
Empty set (0.00 sec)