SQLite
 sql >> Database >  >> RDS >> SQLite

Formatta i risultati di SQLite come JSON

È possibile generare risultati di query come documento JSON quando si utilizza l'interfaccia a riga di comando SQLite.

Possiamo farlo con json modalità di uscita.

Possiamo anche usare funzioni SQLite come json_object() e/o json_array() per restituire i risultati della query come documento JSON.

Modalità di uscita JSON

Possiamo cambiare la modalità di output in questo modo:

.mode json

È tutto.

Ora, quando eseguiamo una query, i risultati vengono emessi come documento JSON:

SELECT * FROM Pets;

Risultato:

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

Tanto per essere chiari, eccolo qui in modalità tabella:

.mode table

Esegui la query:

SELECT * FROM Pets;

Risultato:

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

Tieni presente che la modalità di output json è stata introdotta in SQLite 3.33.0, che è stato rilasciato il 14 agosto 2020.

Se stai utilizzando una versione precedente di SQLite, gli esempi sopra non funzioneranno per te. Se vuoi che funzioni, dovrai eseguire l'aggiornamento a una versione successiva.

In alternativa, puoi utilizzare una funzione JSON per eseguire il lavoro (supponendo che le funzioni JSON siano abilitate).

Funzioni JSON

Un altro modo per farlo è incorporare una o più funzioni JSON nella nostra query in modo che restituisca un documento JSON.

Per prima cosa, impostiamo la nostra modalità di output su list :

.mode list

Ora eseguiamo una query che utilizza json_group_array() e json_object() per restituire i risultati della nostra query in un documento JSON:

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

Risultato:

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

Qui, riproduciamo ogni riga come un oggetto JSON e il tutto è racchiuso in un array JSON.

Possiamo omettere json_group_array() funzione per restituire ogni oggetto da solo:

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

Risultato:

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

Questi esempi presuppongono che le funzioni JSON siano abilitate. Se stai usando SQLite 3.38.0 o versioni successive, questi dovrebbero essere abilitati per impostazione predefinita (a meno che non siano stati disabilitati esplicitamente durante la compilazione di SQLite).

Prima di SQLite versione 3.38.0 (rilasciata il 22 febbraio 2022), dovevamo compilare SQLite con SQLITE_ENABLE_JSON1 opzione per includere le funzioni JSON nella build. Tuttavia, a partire da SQLite versione 3.38.0, le funzioni JSON sono incluse per impostazione predefinita.