Formatar a saída JSON aninhada com modo PATH (SQL Server)Format Nested JSON Output with PATH Mode (SQL Server)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Para manter o controle total sobre a saída da cláusula FOR JSON, especifique a opção PATH.To maintain full control over the output of the FOR JSON clause, specify the PATH option.

O modoPATH permite criar objetos wrapper e aninhar propriedades complexas.PATH mode lets you create wrapper objects and nest complex properties. Os resultados são formatados como uma matriz de objetos JSON.The results are formatted as an array of JSON objects.

A alternativa é usar a opção AUTO para formatar a saída automaticamente com base na estrutura da instrução SELECT.The alternative is to use the AUTO option to format the output automatically based on the structure of the SELECT statement.

Aqui estão alguns exemplos da cláusula FOR JSON com a opção PATH .Here are some examples of the FOR JSON clause with the PATH option. Formate resultados aninhados usando nomes de colunas separados por ponto ou por meio de consultas aninhadas, conforme mostrado nos exemplos a seguir.Format nested results by using dot-separated column names or by using nested queries, as shown in the following examples. Por padrão, os valores nulos não são incluídos na saída FOR JSON.By default, null values are not included in FOR JSON output.

Exemplo: nomes de colunas separadas por pontosExample - Dot-separated column names

A consulta a seguir formata as primeiras cinco linhas da tabela AdventureWorks Person como JSON.The following query formats the first five rows from the AdventureWorks Person table as JSON.

A cláusula FOR JSON PATH usa o alias ou nome da coluna para determinar o nome da chave na saída JSON.The FOR JSON PATH clause uses the column alias or column name to determine the key name in the JSON output. Se um alias contiver pontos, a opção PATH criará objetos aninhados.If an alias contains dots, the PATH option creates nested objects.

ConsultaQuery

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

ResultadoResult

[{
    "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 tabelasExample - Multiple tables

Se mais de uma tabela for referenciada em uma consulta, o FOR JSON PATH aninhará cada coluna usando seu alias.If you reference more than one table in a query, FOR JSON PATH nests each column using its alias. A consulta a seguir cria um objeto JSON por par (OrderHeader, OrderDetails) inserido na consulta.The following query creates one JSON object per (OrderHeader, OrderDetails) pair joined in the query.

ConsultaQuery

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

ResultadoResult

[{
    "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 SQL Server e no Banco de Dados SQL do AzureLearn more about JSON in SQL Server and Azure SQL Database

Vídeos da MicrosoftMicrosoft videos

Para obter uma introdução visual ao suporte interno para JSON no SQL Server e no Banco de Dados SQL do Azure, consulte os seguintes vídeos:For a visual introduction to the built-in JSON support in SQL Server and Azure SQL Database, see the following videos:

Consulte TambémSee Also

Cláusula FOR (Transact-SQL)FOR Clause (Transact-SQL)