sql >> Databasteknik >  >> RDS >> SQLite

SQLite JSON()

I SQLite, json() funktion konverterar råtext som ser ut som JSON till faktisk JSON.

Vi skickar en JSON-sträng som ett argument när vi anropar funktionen. json() funktionen kontrollerar sedan att argumentet är en giltig JSON-sträng och returnerar en minifierad version av den JSON-strängen. Om argumentet inte är en välformad JSON-sträng, skapas ett fel.

Men json() funktion var inte utformad för att testa om ett värde är giltigt JSON eller inte. För att göra det, använd json_valid() funktion istället.

Syntax

json(X)

Där X är värdet som ska kontrolleras och förminskas.

Exempel

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

Resultat:

{"a":1}

I det här fallet tillhandahöll jag ett giltigt JSON-dokument, så en minifierad version av det returnerades (onödiga blanksteg togs bort).

Här är ett exempel som använder ett större JSON-dokument med fler utrymmen:

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

Resultat:

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

json() funktion kan vara användbar när du behöver skicka JSON till en annan funktion. Som nämnt konverterar den råtext som ser ut som JSON till faktisk JSON, vilket gör den idealisk för när du behöver skicka den till den andra funktionen. Den andra funktionen kommer då att tolka värdet som JSON snarare än en sträng.

Ogiltig JSON

Att skicka en ogiltig JSON-sträng resulterar i ett fel:

SELECT json('{oops!');

Resultat:

Runtime error: malformed JSON

Duplicera etiketter

Om ett JSON-dokument innehåller dubbletter av etiketter finns det ingen garanti för att de alltid kommer att bevaras.

I skrivande stund finns dubbletter av etiketter bevarade. SQLite-dokumentationen rekommenderar dock att detta kan ändras i en framtida version av SQLite, så att dubbletter av etiketter tas bort i tysthet.

Här är ett exempel som använder ett JSON-dokument med dubbletter av etiketter:

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

Resultat:

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

I det här fallet har mitt JSON-dokument två etiketter som heter a . Båda bevarades i min SQLite-installation (version 3.38.0), men detta kanske inte alltid är fallet i framtida SQLite-versioner.


  1. Hur man gör dynamiska postgres-förberedda uttalanden i PHP

  2. STR_TO_DATE() Exempel – MySQL

  3. Förklaring av JSONB introducerad av PostgreSQL

  4. Tilldela resultatet av dynamisk sql till variabel