Partilhar via


Formatar saída JSON aninhada com o modo PATH

Aplica-se a: SQL Server 2016 (13.x) e versões posterioresAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (apenas serverless SQL pool)endpoint de análise SQL no Microsoft FabricArmazém de Dados no Microsoft FabricBase de dados SQL no Microsoft Fabric

Para manter o controle total sobre a saída da cláusula FOR JSON, especifique a opção PATH.

O modo PATH permite criar objetos "wrapper" e aninhar propriedades complexas. Os resultados são formatados como uma matriz de objetos JSON.

A alternativa é usar a opção AUTO para formatar a saída automaticamente com base na estrutura da instrução SELECT.

Aqui estão alguns exemplos da cláusula FOR JSON com a opção PATH. Formate resultados aninhados usando nomes de colunas separados por pontos ou consultas aninhadas, conforme mostrado nos exemplos a seguir. Por padrão, valores nulos não são incluídos na saída FOR JSON. do Azure Data Studio é o editor de consultas recomendado para consultas JSON porque formata automaticamente os resultados JSON (como visto neste artigo) em vez de exibir uma cadeia de caracteres simples.

Exemplo - Nomes de colunas separadas por pontos

A consulta a seguir formata as cinco primeiras linhas da tabela AdventureWorks Person como JSON.

A cláusula FOR JSON PATH usa o alias da coluna ou o nome da coluna para determinar o nome da chave na saída JSON. Se um alias contiver pontos, a opção PATH criará objetos aninhados.

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"
    }
}]

Exemplo - Várias tabelas

Se você fizer referência a mais de uma tabela em uma consulta, FOR JSON PATH aninhará cada coluna usando seu alias. A consulta a seguir cria um objeto JSON por cada par (OrderHeader, OrderDetails) combinado na consulta.

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
    }
}]

Saiba mais sobre JSON no Mecanismo de Banco de Dados SQL

Para obter uma introdução visual ao suporte JSON integrado, consulte os seguintes vídeos: