Compartilhar via


Formatar Saída JSON automaticamente com o modo AUTO

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (somente pool de SQL sem servidor)endpoint de análise de SQL no Microsoft FabricArmazém no Microsoft FabricBanco de dados SQL no Microsoft Fabric

Para formatar automaticamente a saída da cláusula FOR JSON com base na estrutura da declaração SELECT, especifique a opção AUTO.

Quando você especifica a opção AUTO , o formato da saída JSON é determinado automaticamente com base na ordem das colunas na lista SELECT e nas tabelas de origem. Você não pode alterar esse formato.

A alternativa é usar a opção PATH para manter controle sobre a saída.

Uma consulta que usa a opção FOR JSON AUTO deve ter uma FROM cláusula.

Aqui estão alguns exemplos da FOR JSON cláusula com a opção AUTO . O Azure Data Studio é o editor de consulta recomendado para consultas JSON porque ele formata automaticamente os resultados JSON (como visto neste artigo) em vez de exibir uma cadeia de caracteres simples.

Examples

Exemplo 1

Query

Quando uma consulta faz referência a apenas uma tabela, os resultados da FOR JSON AUTO cláusula são semelhantes aos resultados de FOR JSON PATH. Nesse caso, FOR JSON AUTO não cria objetos aninhados. A única diferença é que FOR JSON AUTO gera aliases separados por pontos (por exemplo, Info.MiddleName no exemplo a seguir) como chaves com pontos, não como objetos aninhados.

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

Result

[{
    "Id": 1,
    "FirstName": "Ken",
    "LastName": "Sánchez",
    "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.",
    "Info.MiddleName": "A"
}]

Exemplo 2

Query

Quando você une tabelas, as colunas na primeira tabela são geradas como propriedades do objeto raiz. As colunas na segunda tabela são geradas como propriedades de um objeto aninhado. O nome da tabela ou o alias da segunda tabela (por exemplo, D no exemplo a seguir) é usado como o nome da matriz aninhada.

SELECT TOP 2 SalesOrderNumber,  
        OrderDate,  
        UnitPrice,  
        OrderQty  
FROM Sales.SalesOrderHeader H  
   INNER JOIN Sales.SalesOrderDetail D  
     ON H.SalesOrderID = D.SalesOrderID  
FOR JSON AUTO   

Result

[{
    "SalesOrderNumber": "SO43659",
    "OrderDate": "2011-05-31T00:00:00",
    "D": [{
        "UnitPrice": 24.99,
        "OrderQty": 1
    }]
}, {
    "SalesOrderNumber": "SO43659",
    "D": [{
        "UnitPrice": 34.40
    }, {
        "UnitPrice": 134.24,
        "OrderQty": 5
    }]
}]

Exemplo 3

Query
Em vez de usar o FOR JSON AUTO, você pode aninhar uma subconsulta FOR JSON PATH na instrução SELECT, conforme mostrado no exemplo a seguir. Este exemplo produz o mesmo resultado do exemplo anterior.

SELECT TOP 2  
    SalesOrderNumber,  
    OrderDate,  
    (SELECT UnitPrice, OrderQty  
      FROM Sales.SalesOrderDetail AS D  
      WHERE H.SalesOrderID = D.SalesOrderID  
     FOR JSON PATH) AS D  
FROM Sales.SalesOrderHeader AS H  
FOR JSON PATH  

Result

[{
    "SalesOrderNumber": "SO43659",
    "OrderDate": "2011-05-31T00:00:00",
    "D": [{
        "UnitPrice": 24.99,
        "OrderQty": 1
    }]
}, {
    "SalesOrderNumber": "SO4390",
    "D": [{
        "UnitPrice": 24.99
    }]
}]

Saiba mais sobre o JSON no Mecanismo de Banco de Dados SQL

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