Ao usar o SQL Server, você pode usar o
ISJSON()
função para testar se uma expressão de string contém ou não um JSON válido. Se a expressão contiver JSON válido,
ISJSON()
retorna 1
, caso contrário, ele retornará 0
. Sintaxe
A sintaxe fica assim:
ISJSON ( expression )
Onde
expression
é a expressão de string para a qual você está testando um JSON válido. Exemplo 1 – JSON válido
Aqui está um exemplo para demonstrar o que acontece quando a string contém um JSON válido.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
Exemplo 2 – JSON inválido
Aqui está um exemplo para demonstrar o que acontece quando a string não contêm JSON válido.
SELECT ISJSON('Name: Bob') AS Result;
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
Exemplo 3 – Uma declaração condicional
Aqui está uma instrução condicional básica que gera um resultado diferente, dependendo se a string contém JSON ou não.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Resultado:
+------------+ | Result | |------------| | Valid JSON | +------------+
Exemplo 4 – Um exemplo de banco de dados
Nesta consulta de banco de dados, os resultados são retornados apenas onde o
Collections.Contents
coluna contém JSON válido. Esta coluna em particular usa um tipo de dados de
nvarchar(4000)
para armazenar o documento JSON. SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Resultado:
+------------+ | 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" } ] } ] | +------------+