SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Sformatuj wyniki SQLite jako JSON

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwracanie tablicy ciągów i używanie jej w AutoCompleteTextview

  2. Spróbuj ponownie otworzyć już zamknięty obiekt sqlitedatabase

  3. Czy kiedykolwiek wywołano metodę onUpgrade?

  4. Upewnij się, że Kursor jest poprawnie zainicjowany przed uzyskaniem z niego dostępu do danych

  5. Jak dołączyć plik .db z innym Androidem .apk?