Ao usar o MySQL, você pode usar o
JSON_VALID()
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,
JSON_VALID()
retorna 1
, caso contrário, ele retornará 0
. Sintaxe
A sintaxe fica assim:
JSON_VALID(val)
Onde
val
é o valor para o 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 JSON_VALID('{"Name": "Bart"}') 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 JSON_VALID('Name: Bart') AS Result;
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Exemplo 3 – 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
json
para armazenar o documento JSON. SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 1;
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" } ] } ] | +------------+
Veja o que acontece se alterarmos a instrução para retornar os dados somente se
isn't
JSON válido. SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 0;
Resultado:
Empty set (0.00 sec)