SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite JSON()

In SQLite, il json() la funzione converte il testo non elaborato che assomiglia a JSON in JSON effettivo.

Passiamo una stringa JSON come argomento quando chiamiamo la funzione. Il json() La funzione verifica quindi che l'argomento sia una stringa JSON valida e restituisce una versione ridotta di tale stringa JSON. Se l'argomento non è una stringa JSON ben formata, viene generato un errore.

Tuttavia, il json() La funzione non è stata progettata per verificare se un valore è JSON valido o meno. Per farlo, usa json_valid() funzione invece.

Sintassi

json(X)

Dove X è il valore da controllare e minimizzare.

Esempio

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

Risultato:

{"a":1}

In questo caso, ho fornito un documento JSON valido e quindi ne è stata restituita una versione ridotta (gli spazi non necessari sono stati rimossi).

Ecco un esempio che utilizza un documento JSON più grande con più spazi:

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

Risultato:

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

Il json() La funzione può essere utile quando è necessario passare JSON a un'altra funzione. Come accennato, converte il testo non elaborato che assomiglia a JSON in JSON reale, il che lo rende ideale per quando è necessario passarlo all'altra funzione. L'altra funzione interpreterà quindi il valore come JSON anziché come una stringa.

JSON non valido

Il passaggio di una stringa JSON non valida genera un errore:

SELECT json('{oops!');

Risultato:

Runtime error: malformed JSON

Etichette duplicate

Se un documento JSON contiene etichette duplicate, non vi è alcuna garanzia che verranno sempre conservate.

Al momento della scrittura, le etichette duplicate vengono conservate. Tuttavia, la documentazione di SQLite consiglia che ciò potrebbe cambiare in una versione futura di SQLite, in modo che le etichette duplicate vengano rimosse silenziosamente.

Ecco un esempio che utilizza un documento JSON con etichette duplicate:

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

Risultato:

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

In questo caso, il mio documento JSON ha due etichette denominate a . Entrambi sono stati conservati nella mia installazione di SQLite (versione 3.38.0), ma potrebbe non essere sempre così nelle future versioni di SQLite.