Lorsque vous utilisez SQL Server, vous pouvez utiliser le ISJSON()
pour tester si une expression de chaîne contient ou non du JSON valide.
Si l'expression contient du JSON valide, ISJSON()
renvoie 1
, sinon il renvoie 0
.
Syntaxe
La syntaxe ressemble à ceci :
ISJSON ( expression )
Où expression
est l'expression de chaîne pour laquelle vous testez un JSON valide.
Exemple 1 – JSON valide
Voici un exemple pour montrer ce qui se passe lorsque la chaîne contient du JSON valide.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Résultat :
+----------+ | Result | |----------| | 1 | +----------+
Exemple 2 – JSON non valide
Voici un exemple pour montrer ce qui se passe lorsque la chaîne ne le fait pas contenir un JSON valide.
SELECT ISJSON('Name: Bob') AS Result;
Résultat :
+----------+ | Result | |----------| | 0 | +----------+
Exemple 3 - Une instruction conditionnelle
Voici une instruction conditionnelle de base qui produit un résultat différent, selon que la chaîne contient JSON ou non.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Résultat :
+------------+ | Result | |------------| | Valid JSON | +------------+
Exemple 4 - Un exemple de base de données
Dans cette requête de base de données, les résultats ne sont renvoyés que lorsque le Collections.Contents
la colonne contient un JSON valide.
Cette colonne particulière utilise un type de données de nvarchar(4000)
pour stocker le document JSON.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Résultat :
+------------+ | 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" } ] } ] | +------------+