Możliwe jest wyprowadzanie wyników zapytania jako dokumentu JSON podczas korzystania z interfejsu wiersza poleceń SQLite.
Możemy to zrobić za pomocą json
tryb wyjścia.
Możemy również użyć funkcji SQLite, takich jak json_object()
i/lub json_array()
aby zwrócić wyniki zapytania jako dokument JSON.
Tryb wyjścia JSON
Możemy zmienić tryb wyjścia w ten sposób:
.mode json
To wszystko.
Teraz, gdy uruchamiamy zapytanie, wyniki są wyprowadzane jako dokument JSON:
SELECT * FROM Pets;
Wynik:
[{"PetId":1,"PetName":"Homer","TypeId":3}, {"PetId":2,"PetName":"Yelp","TypeId":1}, {"PetId":3,"PetName":"Fluff","TypeId":2}, {"PetId":4,"PetName":"Brush","TypeId":4}]
Żeby było jasne, tutaj jest w trybie tabeli:
.mode table
Uruchom zapytanie:
SELECT * FROM Pets;
Wynik:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Zwróć uwagę, że tryb wyjściowy json został wprowadzony w SQLite 3.33.0, który został wydany 14 sierpnia 2020 r.
Jeśli używasz wcześniejszej wersji SQLite, powyższe przykłady nie będą dla Ciebie działać. Jeśli chcesz, aby to działało, musisz uaktualnić do nowszej wersji.
Alternatywnie możesz użyć funkcji JSON do wykonania zadania (zakładając, że funkcje JSON są włączone).
Funkcje JSON
Innym sposobem na to jest włączenie jednej lub więcej funkcji JSON do naszego zapytania, tak aby zwracało dokument JSON.
Najpierw ustawmy tryb wyjścia na list
:
.mode list
Teraz uruchommy zapytanie, które używa json_group_array()
i json_object()
aby zwrócić wyniki naszego zapytania w dokumencie JSON:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Wynik:
[{"PetId":1,"PetName":"Homer","TypeId":3}, {"PetId":2,"PetName":"Yelp","TypeId":1}, {"PetId":3,"PetName":"Fluff","TypeId":2}, {"PetId":4,"PetName":"Brush","TypeId":4}]
Tutaj wyprowadzamy każdy wiersz jako obiekt JSON, a całość jest opakowana w tablicę JSON.
Możemy pominąć json_group_array()
funkcja zwracająca każdy obiekt z osobna:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Wynik:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
W tych przykładach założono, że funkcje JSON są włączone. Jeśli używasz SQLite 3.38.0 lub nowszego, powinny one być domyślnie włączone (chyba że zostały wyraźnie wyłączone podczas kompilowania SQLite).
Przed wersją SQLite 3.38.0 (wydaną 22 lutego 2022 r.) musieliśmy skompilować SQLite z SQLITE_ENABLE_JSON1
opcję w celu uwzględnienia funkcji JSON w kompilacji. Jednak począwszy od wersji SQLite 3.38.0, funkcje JSON są dołączone domyślnie.