İngilizce dilinde oku

Aracılığıyla paylaş


FOR JSON ile sorgu sonuçlarını JSON olarak biçimlendirme

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen ÖrneğiAzure Synapse Analytics (yalnızca sunucusuz SQL havuzu)Microsoft FabricWarehouse'da SQL analiz uç noktası

FOR JSON yan tümcesini bir SELECT deyimine ekleyerek sorgu sonuçlarını JSON olarak biçimlendirin veya SQL Server'dan verileri JSON olarak dışarı aktarın. Uygulamadan JSON çıktısını biçimlendirme görevini SQL Server'a devrederek istemci uygulamalarını basitleştirmek için FOR JSON yan tümcesini kullanın.

Not

Azure Data Studio, bu makalede gösterildiği gibi JSON sonuçlarını otomatik olarak biçimlendirdiğinden JSON sorguları için önerilen sorgu düzenleyicisidir. SQL Server Management Studio biçimlendirilmemiş bir dize görüntüler.

Sorgu sonuçlarını biçimlendirme

FOR JSON yan tümcesini kullandığınızda, JSON çıkışının yapısını açıkça belirleyebilir veya SELECT deyiminin yapısının çıkışı belirlemesine izin verebilirsiniz.

  • JSON çıkışının biçimi üzerinde tam denetim sahibi olmak için FOR JSON PATHkullanın. Sarmalayıcı nesneleri oluşturabilir ve karmaşık özellikleri iç içe yerleştirebilirsiniz.

  • JSON çıkışını SELECT deyiminin yapısına göre otomatik olarak biçimlendirmek için FOR JSON AUTOkullanın.

aşağıda FOR JSON yan tümcesi ve çıktısı olan bir SELECT deyimi örneği verilmiştir.

for JSON'un nasıl çalıştığını gösteren Diyagramı.

FOR JSON PATH ile çıkışı denetleme

PATH modunda, iç içe çıkışı biçimlendirmek için nokta söz dizimini (örneğin, Item.Price) kullanabilirsiniz.

İşte PATH modunu FOR JSON yan tümcesiyle kullanan bir örnek sorgu. Aşağıdaki örnek, adlandırılmış bir kök öğe belirtmek için ROOT seçeneğini de kullanır.

FOR JSON çıktısının akış diyagramı.

FOR JSON PATH hakkında daha fazla bilgi

Daha ayrıntılı bilgi ve örnekler için bkz. PATH Modu (SQL Server) ile İç İçe JSON Çıktısını Biçimlendirme .

Söz dizimi ve kullanımı için bkz. SELECT - FOR Yan Tümcesi (Transact-SQL).

Diğer JSON çıkış seçeneklerini denetleme

Aşağıdaki ek seçenekleri kullanarak FOR JSON yan tümcesinin çıkışını denetleyin.

  • ROOT

    JSON çıkışına tek ve en üst düzey bir öğe eklemek için ROOT seçeneğini belirtin. Bu seçeneği belirtmezseniz, JSON çıkışının kök öğesi yoktur. Daha fazla bilgi için bkz. ROOT Seçeneği (SQL Server) ile JSON Çıkışına Kök Düğüm Ekleme.

  • INCLUDE_NULL_VALUES

    JSON çıkışına null değerler eklemek için INCLUDE_NULL_VALUES seçeneğini belirtin. Bu seçeneği belirtmezseniz, çıktı sorgu sonuçlarındaki NULL değerleri için JSON özelliklerini içermez. Daha fazla bilgi için bkz. JSON'a Null Değerler Ekleme - INCLUDE_NULL_VALUES Seçenek.

  • WITHOUT_ARRAY_WRAPPER

    FOR JSON yan tümcesinin JSON çıkışını çevreleyen köşeli ayraçları varsayılan olarak kaldırmak için WITHOUT_ARRAY_WRAPPER seçeneğini belirtin. Tek satırlı bir sonuçtan çıkış olarak tek bir JSON nesnesi oluşturmak için bu seçeneği kullanın. Bu seçeneği belirtmezseniz, JSON çıkışı bir dizi olarak biçimlendirilir, yani çıkış köşeli ayraç içine alınır. Daha fazla bilgi için bkz. Köşeli Ayraçları JSON'dan Kaldırma - WITHOUT_ARRAY_WRAPPER Seçeneği.

FOR JSON yan tümcesinin çıkışı

FOR JSON yan tümcesinin çıkışı aşağıdaki özelliklere sahiptir:

  1. Sonuç kümesi tek bir sütun içerir.

    • Küçük bir sonuç kümesi tek bir satır içerebilir.
    • Büyük bir sonuç kümesi, uzun JSON dizesini birden çok satıra böler.
      • Varsayılan olarak, SQL Server Management Studio (SSMS), çıkış ayarı Sonuçları Kılavuzaolduğunda, sonuçları tek bir satırda birleştirir. SSMS durum çubuğunda gerçek satır sayısı görüntülenir.

      • Diğer istemci uygulamaları, kodun birden çok satırın içeriğini birleştirerek uzun sonuçları tek, geçerli bir JSON dizesine yeniden birleştirmesini gerektirebilir. C# uygulamasında bu kodun bir örneği için bkz. C# istemci uygulamasında FOR JSON çıktısının kullanımı.

        SQL Server Management Studio'da FOR JSON çıktısının ekran görüntüsü.

  2. Sonuçlar bir JSON nesneleri dizisi olarak biçimlendirilir.

    • JSON dizisindeki öğe sayısı, SELECT deyiminin sonuçlarındaki satır sayısına eşittir (FOR JSON yan tümcesi uygulanmadan önce).

    • SELECT deyiminin sonuçlarındaki her satır (FOR JSON yan tümcesi uygulanmadan önce) dizide ayrı bir JSON nesnesine dönüşür.

    • SELECT deyiminin sonuçlarındaki her sütun (FOR JSON yan tümcesi uygulanmadan önce) JSON nesnesinin özelliğine dönüşür.

  3. Hem sütunların adları hem de değerleri JSON söz dizimine göre kaçıştırılır. Daha fazla bilgi için bkz. FOR JSON'in özel karakterleri ve denetim karakterlerini nasıl kaçışa aldığı (SQL Server).

Örnek

aşağıda, FOR JSON yan tümcesinin JSON çıkışını nasıl biçimlendirdiğini gösteren bir örnek verilmiştir.

Sorgu sonuçları

A B C D
10 11 12 X
20 21 22 Y
30 31 32 Z

JSON çıkışı

JSON
[{
    "A": 10,
    "B": 11,
    "C": 12,
    "D": "X"
}, {
    "A": 20,
    "B": 21,
    "C": 22,
    "D": "Y"
}, {
    "A": 30,
    "B": 31,
    "C": 32,
    "D": "Z"
}]