Al usar MySQL, puede usar JSON_VALID()
función para probar si una expresión de cadena contiene JSON válido o no.
Si la expresión contiene JSON válido, JSON_VALID()
devuelve 1
, de lo contrario devuelve 0
.
Sintaxis
La sintaxis es así:
JSON_VALID(val)
Donde val
es el valor para el que está probando JSON válido.
Ejemplo 1:JSON válido
Aquí hay un ejemplo para demostrar lo que sucede cuando la cadena contiene JSON válido.
SELECT JSON_VALID('{"Name": "Bart"}') AS Result;
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Ejemplo 2:JSON no válido
Aquí hay un ejemplo para demostrar lo que sucede cuando la cadena no contener JSON válido.
SELECT JSON_VALID('Name: Bart') AS Result;
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Ejemplo 3:un ejemplo de base de datos
En esta consulta de base de datos, los resultados solo se devuelven donde Collections.Contents
columna contiene JSON válido.
Esta columna en particular usa un tipo de datos de json
para almacenar el 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" } ] } ] | +------------+
Esto es lo que sucede si cambiamos la instrucción para devolver los datos solo si isn't
JSON válido.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 0;
Resultado:
Empty set (0.00 sec)