Partager via


Formater la sortie JSON imbriquée avec le mode PATH

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pool SQL serverless uniquement)Point de terminaison analytique SQL dans Microsoft FabricWarehouse dans Microsoft FabricSQL Database dans Microsoft Fabric

Pour conserver un contrôle total sur la sortie de la FOR JSON clause, spécifiez l’option PATH .

PATH mode vous permet de créer des objets wrapper et d’imbriquer des propriétés complexes. Les résultats sont présentés sous la forme de tableau d’objets JSON.

L’alternative consiste à utiliser l’option AUTO permettant de mettre en forme automatiquement la sortie en fonction de la structure de l’instruction SELECT .

Voici quelques exemples de la FOR JSON clause avec l’option PATH . Formatez les résultats imbriqués en utilisant des noms de colonne séparés par des points ou des requêtes imbriquées, comme indiqué dans les exemples suivants. Par défaut, les valeurs Null ne sont pas incluses dans la FOR JSON sortie. Azure Data Studio est l’éditeur de requête recommandé pour les requêtes JSON, car il met en forme automatiquement les résultats JSON (comme indiqué dans cet article) au lieu d’afficher une chaîne plate.

Exemple : noms de colonne séparés par des points

La requête suivante met en forme les cinq premières lignes de la table AdventureWorks Person au format JSON.

La FOR JSON PATH clause utilise l’alias de colonne ou le nom de colonne pour déterminer le nom de clé dans la sortie JSON. Si un alias contient des points, l’option PATH crée des objets imbriqués.

Query

SELECT TOP 5   
       BusinessEntityID As Id,  
       FirstName, LastName,  
       Title As 'Info.Title',  
       MiddleName As 'Info.MiddleName'  
   FROM Person.Person  
   FOR JSON PATH   

Result

[{
    "Id": 1,
    "FirstName": "Ken",
    "LastName": "Sanchez",
    "Info": {
        "MiddleName": "J"
    }
}, {
    "Id": 2,
    "FirstName": "Terri",
    "LastName": "Duffy",
    "Info": {
        "MiddleName": "Lee"
    }
}, {
    "Id": 3,
    "FirstName": "Roberto",
    "LastName": "Tamburello"
}, {
    "Id": 4,
    "FirstName": "Rob",
    "LastName": "Walters"
}, {
    "Id": 5,
    "FirstName": "Gail",
    "LastName": "Erickson",
    "Info": {
        "Title": "Ms.",
        "MiddleName": "A"
    }
}]

Exemple : plusieurs tables

Si vous référencez plusieurs tables dans une requête, FOR JSON PATH imbriquez chaque colonne à l’aide de son alias. La requête suivante crée un objet JSON par paire (OrderHeader, OrderDetails) jointe à la requête.

Query

SELECT TOP 2 H.SalesOrderNumber AS 'Order.Number',  
        H.OrderDate AS 'Order.Date',  
        D.UnitPrice AS 'Product.Price',  
        D.OrderQty AS 'Product.Quantity'  
FROM Sales.SalesOrderHeader H  
   INNER JOIN Sales.SalesOrderDetail D  
     ON H.SalesOrderID = D.SalesOrderID  
FOR JSON PATH   

Result

[{
    "Order": {
        "Number": "SO43659",
        "Date": "2011-05-31T00:00:00"
    },
    "Product": {
        "Price": 2024.9940,
        "Quantity": 1
    }
}, {
    "Order": {
        "Number": "SO43659"
    },
    "Product": {
        "Price": 2024.9940
    }
}]

En savoir plus sur JSON dans le moteur de base de données SQL

Pour une présentation visuelle de la prise en charge JSON intégrée, consultez les vidéos suivantes :