Formatar saída JSON aninhada com o modo PATH
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Azure Synapse Analytics (somente pool SQL sem servidor)
ponto de extremidade de análise SQL no Microsoft Fabric
Warehouse 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
.
- Para obter mais informações sobre a opção
AUTO
, consulte Formatar saída JSON automaticamente com o modo AUTO . - Para obter uma visão geral de ambas as opções, consulte Formatar resultados da consulta como JSON com FOR JSON.
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.
Consulta
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
Resultado
[{
"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.
Consulta
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
Resultado
[{
"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 interno no SQL Server e no Banco de Dados SQL do Azure, consulte os seguintes vídeos: