Używając SQL Server, możesz użyć ISJSON()
funkcja do sprawdzenia, czy wyrażenie tekstowe zawiera prawidłowy JSON.
Jeśli wyrażenie zawiera prawidłowy JSON, ISJSON()
zwraca 1
, w przeciwnym razie zwraca 0
.
Składnia
Składnia wygląda tak:
ISJSON ( expression )
Gdzie expression
to wyrażenie tekstowe, dla którego testujesz poprawny JSON.
Przykład 1 – prawidłowy JSON
Oto przykład pokazujący, co się dzieje, gdy ciąg zawiera prawidłowy JSON.
SELECT ISJSON('{"Name": "Bob"}') 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 ISJSON('Name: Bob') AS Result;
Wynik:
+----------+ | Result | |----------| | 0 | +----------+
Przykład 3 – Instrukcja warunkowa
Oto podstawowa instrukcja warunkowa, która wyprowadza inny wynik, w zależności od tego, czy ciąg zawiera JSON, czy nie.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Wynik:
+------------+ | Result | |------------| | Valid JSON | +------------+
Przykład 4 – 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 nvarchar(4000)
do przechowywania dokumentu JSON.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
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" } ] } ] | +------------+