Aracılığıyla paylaş


JSON Çıkışını AUTO Modu ile Otomatik Olarak Biçimlendirme

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (yalnızca sunucusuz SQL havuzu)Microsoft Fabric'te SQL analitik uç noktasıMicrosoft Fabric'te depo veritabanıMicrosoft Fabric'te SQL veritabanı

FOR JSON ifadesinin yapısına göre SELECT yan tümcesinin çıktısını otomatik biçimlendirmek için AUTO seçeneğini belirtin.

Seçeneği belirttiğinizde AUTO , JSON çıkışının biçimi SELECT listesindeki sütunların sırasına ve kaynak tablolarına göre otomatik olarak belirlenir. Bu biçimi değiştiremezsiniz.

Bunun alternatifi, çıkış üzerinde denetimi korumak için seçeneğini kullanmaktır PATH .

Bir sorguda FOR JSON AUTO seçeneği kullanılıyorsa, FROM içeren bir tümce olmalıdır.

Burada FOR JSON yan tümcesinin AUTO seçeneğiyle bazı örnekleri verilmiştir. Azure Data Studio, JSON sonuçlarını düz bir dize görüntülemek yerine otomatik olarak biçimlendirdiğinden (bu makalede görüldüğü gibi) JSON sorguları için önerilen sorgu düzenleyicisidir.

Examples

Örnek 1

Query

Sorgu yalnızca bir tabloya başvurduğunda yan tümcesinin FOR JSON AUTO sonuçları sonuçlarına FOR JSON PATHbenzer. Bu durumda FOR JSON AUTO iç içe nesneler oluşturmaz. Tek fark, FOR JSON AUTO 'nin noktalarla ayrılmış takma adları (aşağıdaki örnekte Info.MiddleName gibi), iç içe nesneler şeklinde değil, noktalı anahtarlar şeklinde çıkış yapmasıdır.

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

Örnek 2

Query

Tabloları birleştirdiğinizde, ilk tablodaki sütunlar kök nesnenin özellikleri olarak oluşturulur. İkinci tablodaki sütunlar iç içe nesnenin özellikleri olarak oluşturulur. İkinci tablonun tablo adı veya diğer adı (örneğin, aşağıdaki örnekte D) iç içe dizi adı olarak kullanılır.

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

Örnek 3

Query
FOR JSON AUTO kullanmak yerine, aşağıdaki örnekte gösterildiği gibi, SELECT deyiminde for JSON PATH alt sorgularını iç içe yerleştirebilirsiniz. Bu örnek, önceki örnekle aynı sonucu döndürür.

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

SQL Veritabanı Altyapısı'nda JSON hakkında daha fazla bilgi edinin

Yerleşik JSON desteğine görsel bir giriş için aşağıdaki videolara bakın:

  • NoSQL ile ilişkisel dünyalar arasında bir köprü olarak JSON