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

Formátovat výsledky SQLite jako JSON

Při použití rozhraní příkazového řádku SQLite je možné vytisknout výsledky dotazu jako dokument JSON.

Můžeme to udělat pomocí json výstupní režim.

Můžeme také použít funkce SQLite jako json_object() a/nebo json_array() vrátit výsledky dotazu jako dokument JSON.

Výstupní režim JSON

Výstupní režim můžeme změnit takto:

.mode json

To je vše.

Když nyní spustíme dotaz, výsledky se vytisknou jako dokument JSON:

SELECT * 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}]

Aby bylo jasno, zde je to v režimu tabulky:

.mode table

Spusťte dotaz:

SELECT * FROM Pets;

Výsledek:

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

Všimněte si, že výstupní režim json byl představen ve verzi SQLite 3.33.0, která byla vydána 14. srpna 2020.

Pokud používáte dřívější verzi SQLite, výše uvedené příklady pro vás nebudou fungovat. Pokud chcete, aby to fungovalo, budete muset upgradovat na novější verzi.

Případně můžete k provedení úlohy použít funkci JSON (za předpokladu, že jsou funkce JSON povoleny).

Funkce JSON

Dalším způsobem, jak to udělat, je začlenit jednu nebo více funkcí JSON do našeho dotazu tak, aby vrátil dokument JSON.

Nejprve nastavíme výstupní režim na list :

.mode list

Nyní spusťte dotaz, který používá json_group_array() a json_object() abychom vrátili výsledky dotazu v dokumentu JSON:

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}]

Zde vypíšeme každý řádek jako objekt JSON a celá věc je zabalena do pole JSON.

Můžeme vynechat json_group_array() funkce, která vrátí každý objekt samostatně:

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}

Tyto příklady předpokládají, že jsou povoleny funkce JSON. Pokud používáte SQLite 3.38.0 nebo novější, měly by být ve výchozím nastavení povoleny (pokud nebyly výslovně zakázány při kompilaci SQLite).

Před verzí SQLite 3.38.0 (vydanou 22. února 2022) jsme potřebovali zkompilovat SQLite s SQLITE_ENABLE_JSON1 za účelem zahrnutí funkcí JSON do sestavení. Počínaje verzí SQLite 3.38.0 jsou však funkce JSON zahrnuty ve výchozím nastavení.


  1. Jak zjistit čas provádění dotazu v Oracle SQL Developer?

  2. Use string obsahuje funkci v dotazu Oracle SQL

  3. Vyberte bez klauzule FROM v Oracle

  4. Jak odstranit položky z databáze sqlite pomocí třídy SQLiteOpenHelper