Aracılığıyla paylaş


PATH moduyla iç içe JSON çıkışını 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ı

Yan tümcesinin FOR JSON çıkışı üzerinde tam denetim sağlamak için PATH seçeneğini belirtin.

PATH modu, sarmalayıcı nesneleri oluşturmanızı ve karmaşık özellikleri iç içe yerleştirmenizi sağlar. Sonuçlar bir JSON nesneleri dizisi olarak biçimlendirilir.

Alternatif olarak, çıkışı AUTO deyiminin yapısına göre otomatik biçimlendirme seçeneğini SELECT kullanmaktır.

Aşağıdaki örneklerde FOR JSON yan tümcesi PATH seçeneğiyle nasıl kullanılır gösterilmektedir. Noktayla ayrılmış sütun adlarını veya örneklerde gösterildiği gibi iç içe sorguları kullanarak iç içe yerleştirilmiş sonuçları biçimlendirin. Varsayılan olarak, null değerler çıkışa FOR JSON dahil değildir.

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.

Örnekler

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

A. Nokta ile ayrılmış sütun adları

Aşağıdaki sorgu AdventureWorks Person tablosundaki ilk beş satırı JSON olarak biçimlendirir.

FOR JSON PATH ifadesi, JSON çıktısındaki anahtar adını belirlemek için sütun takma adını veya sütun adını kullanır. Alias noktalar içeriyorsa, PATH seçeneği iç içe nesneler oluşturur.

SELECT TOP 5 BusinessEntityID AS Id,
             FirstName,
             LastName,
             Title AS 'Info.Title',
             MiddleName AS 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH;

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

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

B. Birden çok tablo

Sorguda birden fazla tabloya başvurursanız, FOR JSON PATH diğer adını kullanarak her sütunu iç içe yuvarlar. Aşağıdaki sorgu, sorgunun katıldığı her (OrderHeader, OrderDetails) çift için bir JSON nesnesi oluşturur.

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

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

[{
    "Order": {
        "Number": "SO43659",
        "Date": "2011-05-31T00:00:00"
    },
    "Product": {
        "Price": 2024.9940,
        "Quantity": 1
    }
}, {
    "Order": {
        "Number": "SO43659"
    },
    "Product": {
        "Price": 2024.9940
    }
}]

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.