OTOMATIK mod ile JSON çıkışını 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ı

Çıktıyı SELECT deyiminin yapısına göre otomatik olarak biçimlendirmek için FOR JSON cümlesini belirten 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.

PATH Çıkışı denetlemek istiyorsanız seçeneğini kullanın.

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.

Uyarı

Visual Studio Code için MSSQL uzantısı, biçimlendirilmemiş bir dize görüntülemek yerine JSON sonuçlarını (bu makalede görüldüğü gibi) otomatik olarak biçimlendirebilir.

Examples

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Tek bir tablodan JSON biçimlendirme

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;

Sonuç kümesi aşağıdadır.

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

B. Birleştirilmiş tablolar için JSON biçimlendirme

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 AS H
     INNER JOIN Sales.SalesOrderDetail AS D
         ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO;

Sonuç kümesi aşağıdadır.

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

C. FOR JSON PATH kullanarak AUTO çıkışını eşleştirin

FOR JSON AUTO kullanmak yerine, aşağıdaki örnekte gösterildiği gibi, deyiminde SELECT bir alt sorguyu FOR JSON PATH olarak 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;

Sonuç kümesi aşağıdadır.

[{
    "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 bkz. NoSQL ile ilişkisel dünyalar arasında köprü olarak JSON.