Partilhar via


Formatar saída JSON automaticamente com o modo AUTO

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 formatar automaticamente a cláusula FOR JSON com base na estrutura da declaração SELECT, especifique a opção AUTO.

Quando você especifica a AUTO opção, o formato da saída JSON é determinado automaticamente com base na ordem das colunas na lista SELECT e suas tabelas de origem. Não é possível alterar este formato.

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

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

Aqui estão alguns exemplos da cláusula FOR JSON com a opção AUTO. 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.

Examples

Exemplo 1

Query

Quando uma consulta faz referência a apenas uma tabela, os FOR JSON AUTO resultados da 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 produz aliases separados por pontos (por exemplo, Info.MiddleName no exemplo a seguir) como chaves separadas por 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 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 FOR JSON AUTO, pode-se aninhar uma subconsulta FOR JSON PATH na instrução SELECT, como mostrado no exemplo a seguir. Este exemplo produz o mesmo resultado que o 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 JSON no Mecanismo de Banco de Dados SQL

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