Aracılığıyla paylaş


PATH Modu ile İç İç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.

Burada FOR JSON yan tümcesinin PATH seçeneğiyle bazı örnekleri verilmiştir. Aşağıdaki örneklerde gösterildiği gibi noktayla ayrılmış sütun adlarını veya iç içe sorguları kullanarak iç içe yerleştirilmiş sonuçları biçimlendirin. Varsayılan olarak, null değerler FOR JSON çıktılarına dahil edilmez. 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.

Örnek - 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.

Query

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

Result

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

Örnek - 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, sorguya katılmış her (OrderHeader, OrderDetails) çift için bir JSON nesnesi oluşturur.

Query

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

Result

[{
    "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 aşağıdaki videolara bakın:

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