När du använder MySQL kan du använda JSON_VALID()
funktion för att testa om ett stränguttryck innehåller giltig JSON eller inte.
Om uttrycket innehåller giltig JSON, JSON_VALID()
returnerar 1
, annars returnerar den 0
.
Syntax
Syntaxen ser ut så här:
JSON_VALID(val)
Där val
är värdet som du testar för giltig JSON.
Exempel 1 – Giltig JSON
Här är ett exempel för att visa vad som händer när strängen innehåller giltig JSON.
SELECT JSON_VALID('{"Name": "Bart"}') AS Result;
Resultat:
+--------+ | Result | +--------+ | 1 | +--------+
Exempel 2 – Ogiltig JSON
Här är ett exempel för att visa vad som händer när strängen inte gör det innehåller giltig JSON.
SELECT JSON_VALID('Name: Bart') AS Result;
Resultat:
+--------+ | Result | +--------+ | 0 | +--------+
Exempel 3 – Ett databasexempel
I den här databasfrågan returneras resultaten endast där Collections.Contents
kolumnen innehåller giltig JSON.
Den här specifika kolumnen använder datatypen json
för att lagra JSON-dokumentet.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 1;
Resultat:
+------------+ | 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" } ] } ] | +------------+
Här är vad som händer om vi ändrar uttalandet så att data endast returneras om det isn't
är det giltig JSON.
SELECT Contents FROM Collections WHERE JSON_VALID(Contents) = 0;
Resultat:
Empty set (0.00 sec)