É possível gerar resultados de consulta como um documento JSON ao usar a interface de linha de comando SQLite.
Podemos fazer isso com o
json
modo de saída. Também podemos usar funções SQLite como
json_object()
e/ou json_array()
para retornar os resultados da consulta como um documento JSON. Modo de saída JSON
Podemos alterar o modo de saída assim:
.mode json
Isso é tudo.
Agora, quando executamos uma consulta, os resultados são exibidos como um documento JSON:
SELECT * FROM Pets;
Resultado:
[{"PetId":1,"PetName":"Homer","TypeId":3}, {"PetId":2,"PetName":"Yelp","TypeId":1}, {"PetId":3,"PetName":"Fluff","TypeId":2}, {"PetId":4,"PetName":"Brush","TypeId":4}]
Só para ficar claro, aqui está no modo de tabela:
.mode table
Execute a consulta:
SELECT * FROM Pets;
Resultado:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Observe que o modo de saída json foi introduzido no SQLite 3.33.0, lançado em 14 de agosto de 2020.
Se você estiver usando uma versão anterior do SQLite, os exemplos acima não funcionarão para você. Você precisará atualizar para uma versão posterior se quiser que isso funcione.
Como alternativa, você pode usar uma função JSON para fazer o trabalho (supondo que as funções JSON estejam habilitadas).
Funções JSON
Outra maneira de fazer isso é incorporar uma ou mais funções JSON em nossa consulta para que ela retorne um documento JSON.
Primeiro, vamos definir nosso modo de saída para
list
:.mode list
Agora vamos executar uma consulta que usa
json_group_array()
e json_object()
para retornar nossos resultados de consulta em um documento JSON:SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Resultado:
[{"PetId":1,"PetName":"Homer","TypeId":3}, {"PetId":2,"PetName":"Yelp","TypeId":1}, {"PetId":3,"PetName":"Fluff","TypeId":2}, {"PetId":4,"PetName":"Brush","TypeId":4}]
Aqui, produzimos cada linha como um objeto JSON e tudo é encapsulado em uma matriz JSON.
Podemos omitir o
json_group_array()
função para retornar cada objeto por conta própria:SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Resultado:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
Esses exemplos pressupõem que as funções JSON estão habilitadas. Se você estiver usando o SQLite 3.38.0 ou posterior, eles devem estar habilitados por padrão (a menos que tenham sido explicitamente desabilitados ao compilar o SQLite).
Antes do SQLite versão 3.38.0 (lançado em 22 de fevereiro de 2022), precisávamos compilar o SQLite com o
SQLITE_ENABLE_JSON1
opção para incluir as funções JSON no arquivo build. No entanto, a partir do SQLite versão 3.38.0, as funções JSON são incluídas por padrão.