JSON_ARRAY |
Tableau JSON |
|---|---|
| Oracle Database SQL | Oracle 12.1 ou supérieure |
Syntaxe
| JSON_ARRAY( expr [ FORMAT JSON ] [, expr [ FORMAT JSON ] ]... [ JSON_on_null_clause ] [ JSON_returning_clause ] [ STRICT ] [ WITH UNIQUE KEYS ] ) |
Paramètres
| Nom | Description |
|---|---|
| expr | Ce paramètre permet d'indiquer une expression SQL dont la valeur sera insérée comme élément dans le tableau JSON. Plusieurs expressions peuvent être fournies pour constituer le contenu du tableau. |
| FORMAT JSON | Ce paramètre permet de spécifier que l'expression correspond déjà à une valeur JSON bien formée, évitant ainsi une double conversion ou un échappement inapproprié. |
| JSON_on_null_clause | Ce paramètre permet de définir le comportement à adopter lorsqu'une expression retourne NULL. Il peut s'agir de NULL ON NULL (par défaut, conserve les null) ou ABSENT ON NULL (ignore les valeurs null). |
| JSON_returning_clause | Ce paramètre permet de spécifier le type SQL dans lequel la valeur JSON résultante doit être retournée (par exemple RETURNING CLOB, RETURNING VARCHAR2,...). |
| STRICT | Ce paramètre permet de demander un contrôle strict sur les expressions, notamment en rejetant celles qui ne peuvent pas être converties en JSON valide. |
| WITH UNIQUE KEYS | Ce paramètre permet de garantir que les objets JSON générés dans les expressions (s'ils contiennent des clefs) auront des clefs uniques, ce qui est important pour respecter les contraintes de structure JSON valides. |
Description
Cette fonction permet de créer un tableau JSON à partir d'une liste d'expressions SQL. Elle génère une valeur au format JSON contenant les éléments passés en paramètre, dans l'ordre spécifié.
Remarques
- Construction dynamique de tableaux JSON : La fonction JSON_ARRAY est essentielle lorsqu'on souhaite générer dynamiquement des tableaux JSON à partir de résultats SQL. Elle permet d'encapsuler plusieurs expressions dans un format structuré compatible avec les standards JSON. Cela simplifie grandement la production d'API ou d'échanges de données inter-systèmes.
- Prise en charge native de NULL : Grâce au paramètre JSON_on_null_clause, l'utilisateur peut contrôler précisément le traitement des valeurs NULL. Il peut soit les inclure (NULL ON NULL), soit les exclure (ABSENT ON NULL). Ce comportement est crucial pour générer des documents JSON propres et adaptés aux attentes de l'application consommatrice.
- Sécurité du contenu avec FORMAT JSON : Le modificateur FORMAT JSON informe Oracle que la donnée fournie est déjà au format JSON valide. Cela empêche le moteur SQL d'échapper ou de convertir de manière incorrecte le contenu. Cette option est indispensable lorsqu'on utilise déjà des sous-documents JSON dans les colonnes source.
- Typage explicite du résultat : La clause JSON_returning_clause permet de spécifier le type de retour (VARCHAR2, CLOB,...). Cette précision est utile lorsque l'on travaille avec de grandes structures JSON nécessitant un stockage texte volumineux, notamment dans des contextes web ou d'exportation.
- Contrôle strict de la validité JSON : L'option STRICT déclenche une validation rigoureuse des expressions JSON. Elle rejette immédiatement les entrées non conformes. Cela permet de sécuriser les données produites, notamment dans des environnements critiques ou réglementés.
- Conformité aux standards JSON : Avec WITH UNIQUE KEYS, Oracle impose l'unicité des clés au sein d'un même objet JSON. Cela évite les structures ambigües où plusieurs clefs identiques apparaîtraient, ce qui est invalide selon les spécifications JSON modernes.
- Traitement itératif possible : La fonction peut être utilisée en conjonction avec des fonctions d'agrégation ou des clauses comme LISTAGG, GROUP BY ou CURSOR, afin de générer un tableau JSON par ligne. C'est très pratique pour l'export ou l'intégration de données hiérarchiques.
- Interopérabilité avec les services web : Le résultat de JSON_ARRAY peut être facilement transmis à des services web RESTful ou des applications JavaScript. Oracle devient alors un fournisseur de données JSON prêt à être consommé côté client.
- Utilisable dans des expressions imbriquées : JSON_ARRAY peut être imbriqué dans d'autres fonctions JSON comme JSON_OBJECT ou JSON_OBJECTAGG. Cela permet de construire des structures complexes, comme des objets contenant des tableaux, et inversement.
- Simplifie le traitement JSON côté SQL : Au lieu d'avoir à manipuler manuellement des chaînes de caractères pour construire du JSON, cette fonction garantit une sortie correcte, encodée et échappée. Elle réduit les risques d'erreurs de syntaxe JSON.
- Support des données hétérogènes : Les expressions passées à JSON_ARRAY peuvent être de types différents : chaînes, nombres, dates,... Oracle gère automatiquement la conversion au format JSON adéquat, selon les règles standards.
- Préparation facile à la publication : Cette fonction est idéale pour des opérations d'exportation ou de génération de rapports en JSON. Elle permet aux développeurs de transformer rapidement des résultats SQL en documents structurés sans code applicatif supplémentaire.
- Optimisation et performance : Puisqu'elle est native au moteur Oracle, la fonction est optimisée pour traiter de grandes quantités de données. Cela la rend plus rapide et plus fiable que la génération manuelle de chaînes JSON.
- Lisibilité du code SQL : Utiliser JSON_ARRAY rend le code SQL plus lisible et maintenable lorsqu'on travaille avec des structures JSON complexes. On voit clairement les champs et leur ordre dans le tableau généré.
- Bonne gestion des types DATE et TIMESTAMP : Lorsqu'un champ de type date est passé à JSON_ARRAY, Oracle le convertit en une chaîne ISO 8601 par défaut. Cela garantit une bonne compatibilité avec la plupart des langages de programmation modernes.
Dernière mise à jour : Dimanche, le 29 Juin 2025