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)