sql >> Databáze >  >> RDS >> SQLite

SQLite JSON_OBJECT()

SQLite json_object() funkce vrací dobře tvarovaný objekt JSON na základě jeho argumentů.

Funkce přijímá nula nebo více párů argumentů a vrací správně vytvořený objekt JSON založený na těchto argumentech.

Syntaxe

json_object(label1,value1,...)

Kde label1, value2, ... představuje páry štítek/hodnota.

Příklad

Zde je jednoduchý příklad k demonstraci:

SELECT json_object( "name", "Igor", "age", 35 );

Výsledek:

{"name":"Igor","age":35}

Předávání objektů JSON

Předání argumentu s typem SQL TEXT má za následek řetězec JSON v uvozovkách, přičemž všechny popisky v uvozovkách budou uvozeny:

SELECT json_object( "user", '{ "name" : "igor", "age" : 35 }' );

Výsledek:

{"user":"{ \"name\" : \"igor\", \"age\" : 35 }"}

Pokud nechceme, aby se to stalo, můžeme použít json() funkci poskytnout hodnotu jako platný dokument JSON:

SELECT json_object( "user", json('{ "name" : "igor", "age" : 35 }') );

Výsledek:

{"user":{"name":"igor","age":35}}

Dalším způsobem, jak to udělat, je použít -> SQLite operátor:

SELECT json_object( "user", '{ "name" : "igor", "age" : 35 }' -> '$' );

Výsledek:

{"user":{"name":"igor","age":35}}

Případně můžeme použít jiný json_object() funkce:

SELECT json_object( "user", json_object( "name", "Igor", "age", 35 ) );

Výsledek:

{"user":{"name":"Igor","age":35}}

Zde je to s některými dalšími hodnotami:

SELECT json_object( 
    "a", 1, 
    "user", json_object( "name", "Igor", "age", 35 ), 
    "b", 2 
    );

Výsledek:

{"a":1,"user":{"name":"Igor","age":35},"b":2}

Předávání polí JSON

Při předávání polí JSON je to podobné:

SELECT json_object( "scores", '[ 9, 4, 7 ]' );

Výsledek:

{"scores":"[ 9, 4, 7 ]"}

V tomto případě je hodnotou řetězec, který připomíná pole.

Abychom vrátili skutečné pole JSON, můžeme předat náš argument do json() funkce:

SELECT json_object( "scores", json('[ 9, 4, 7 ]') );

Výsledek:

{"scores":[9,4,7]}

Můžeme také použít -> operátor:

SELECT json_object( "scores", '[ 9, 4, 7 ]' -> '$' );

Výsledek:

{"scores":[9,4,7]}

Případně můžeme předat hodnoty do json_array() funkce:

SELECT json_object( "scores", json_array( 9, 4, 7 ) );

Výsledek:

{"scores":[9,4,7]}

Zde je to s některými dalšími páry název/hodnota:

SELECT json_object( 
    "name", "Bruno", 
    "scores", json_array( 9, 4, 7 ), 
    "age", 25 
    );

Výsledek:

{"name":"Bruno","scores":[9,4,7],"age":25}

Vytvořte prázdný objekt

Volání json_object() bez předání jakýchkoli argumentů bude výsledkem prázdný objekt:

SELECT json_object();

Výsledek:

{}

Duplicitní štítky

V době psaní json_object() přijímá duplicitní štítky bez problémů. Proto můžeme dělat věci jako toto:

SELECT json_object( "b", 1, "b", 2 );

Výsledek:

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

Dokumentace SQLite však radí, že tomu tak nemusí být vždy – budoucí verze SQLite nemusí takové scénáře podporovat.

Příklad databáze

Můžeme použít json_object() při získávání dat z databáze.

Předpokládejme, že spustíme následující dotaz:

SELECT * FROM Pets;

Výsledek:

+-------+---------+--------+
| PetId | PetName | TypeId |
+-------+---------+--------+
| 1     | Homer   | 3      |
| 2     | Yelp    | 1      |
| 3     | Fluff   | 2      |
| 4     | Brush   | 4      |
+-------+---------+--------+

Vidíme, že existují tři sloupce a vidíme jejich názvy.

Můžeme použít json_object() fungovat na tomto stole takto:

SELECT json_object( 
    'PetId', PetId, 
    'PetName', PetName,
    'TypeId', TypeId 
    )
FROM Pets;

Výsledek:

{"PetId":1,"PetName":"Homer","TypeId":3}
{"PetId":2,"PetName":"Yelp","TypeId":1}
{"PetId":3,"PetName":"Fluff","TypeId":2}
{"PetId":4,"PetName":"Brush","TypeId":4}

Zde jsem výslovně uvedl názvy štítků a pro hodnoty jsem pak použil skutečné sloupce z databáze. Každý řádek se stane dokumentem JSON a každý sloupec se v tomto dokumentu JSON stane párem klíč/hodnota.

Můžeme také použít json_group_array() funkce pro uzavření dokumentů do pole:

SELECT json_group_array( 
        json_object(
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    )
FROM Pets;

Výsledek:

[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

  1. Převezměte kontrolu nad svými daty pomocí Microsoft Access

  2. Spuštění SQL skriptu přes psql dává syntaktické chyby, které se v PgAdmin nevyskytují

  3. Ukládání obrázků do polí bajtů v databázi PostgreSQL

  4. Vysvětlení funkce MySQL IF().