SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite JSON()

Dans SQLite, le json() convertit le texte brut qui ressemble à JSON en JSON réel.

Nous passons une chaîne JSON comme argument lorsque nous appelons la fonction. Le json() La fonction vérifie ensuite que l'argument est une chaîne JSON valide et renvoie une version réduite de cette chaîne JSON. Si l'argument n'est pas une chaîne JSON bien formée, une erreur est renvoyée.

Cependant, le json() La fonction n'a pas été conçue pour tester si une valeur est valide ou non JSON. Pour ce faire, utilisez le json_valid() fonction à la place.

Syntaxe

json(X)

X est la valeur à vérifier et minifier.

Exemple

SELECT json('{ "a": 1 }');

Résultat :

{"a":1}

Dans ce cas, j'ai fourni un document JSON valide, et donc une version réduite de celui-ci a été renvoyée (les espaces inutiles ont été supprimés).

Voici un exemple qui utilise un document JSON plus grand avec plus d'espaces :

SELECT json('{
	"_id": 1.0,
	"title": "Animals",
	"body": "blah blah 1",
	"tags": [
		"cats",
		"dogs"
	]
}');

Résultat :

{"_id":1.0,"title":"Animals","body":"blah blah 1","tags":["cats","dogs"]}

Le json() La fonction peut être utile lorsque vous devez transmettre JSON à une autre fonction. Comme mentionné, il convertit le texte brut qui ressemble à JSON en JSON réel, ce qui le rend idéal lorsque vous devez le transmettre à l'autre fonction. L'autre fonction interprétera alors la valeur comme JSON plutôt que comme une chaîne.

JSON non valide

La transmission d'une chaîne JSON non valide entraîne une erreur :

SELECT json('{oops!');

Résultat :

Runtime error: malformed JSON

Étiquettes en double

Si un document JSON contient des étiquettes en double, rien ne garantit qu'elles seront toujours conservées.

Au moment de la rédaction, les étiquettes en double sont conservées. Cependant, la documentation SQLite indique que cela pourrait changer dans une future version de SQLite, afin que les étiquettes en double soient supprimées en silence.

Voici un exemple qui utilise un document JSON avec des libellés en double :

SELECT json('{ "a": 1, "b": 1, "a" : 2 }');

Résultat :

{"a":1,"b":1,"a":2}

Dans ce cas, mon document JSON a deux étiquettes appelées a . Les deux ont été conservés dans mon installation SQLite (version 3.38.0), mais ce ne sera peut-être pas toujours le cas dans les futures versions de SQLite.