SQLite
 sql >> Base de données >  >> RDS >> SQLite

Formater les résultats SQLite en JSON

Il est possible de générer des résultats de requête sous forme de document JSON lors de l'utilisation de l'interface de ligne de commande SQLite.

Nous pouvons le faire avec le json mode de sortie.

Nous pouvons également utiliser des fonctions SQLite comme json_object() et/ou json_array() pour renvoyer les résultats de la requête sous forme de document JSON.

Mode de sortie JSON

Nous pouvons changer le mode de sortie comme ceci :

.mode json

C'est tout.

Désormais, lorsque nous exécutons une requête, les résultats sont générés sous forme de document JSON :

SELECT * FROM Pets;

Résultat :

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

Juste pour être clair, le voici en mode tableau :

.mode table

Exécutez la requête :

SELECT * FROM Pets;

Résultat :

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

Notez que le mode de sortie json a été introduit dans SQLite 3.33.0, qui a été publié le 14 août 2020.

Si vous utilisez une version antérieure de SQLite, les exemples ci-dessus ne fonctionneront pas pour vous. Vous devrez mettre à niveau vers une version ultérieure si vous voulez que cela fonctionne.

Vous pouvez également utiliser une fonction JSON pour effectuer le travail (en supposant que les fonctions JSON sont activées).

Fonctions JSON

Une autre façon de procéder consiste à incorporer une ou plusieurs fonctions JSON dans notre requête afin qu'elle renvoie un document JSON.

Tout d'abord, définissons notre mode de sortie sur list :

.mode list

Exécutons maintenant une requête qui utilise json_group_array() et json_object() pour renvoyer les résultats de notre requête dans un document JSON :

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

Résultat :

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

Ici, nous produisons chaque ligne sous la forme d'un objet JSON, et le tout est encapsulé dans un tableau JSON.

Nous pouvons omettre le json_group_array() fonction pour renvoyer chaque objet seul :

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

Résultat :

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

Ces exemples supposent que les fonctions JSON sont activées. Si vous utilisez SQLite 3.38.0 ou une version ultérieure, ceux-ci doivent être activés par défaut (sauf s'ils ont été explicitement désactivés lors de la compilation de SQLite).

Avant la version 3.38.0 de SQLite (publiée le 22 février 2022), nous devions compiler SQLite avec le SQLITE_ENABLE_JSON1 option afin d'inclure les fonctions JSON dans le build. Cependant, à partir de la version 3.38.0 de SQLite, les fonctions JSON sont incluses par défaut.