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í.