Megosztás a következőn keresztül:


Szögletes zárójelek eltávolítása a JSON-ból – WITHOUT_ARRAY_WRAPPER beállítás

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (csak szerver nélküli SQL pool)SQL analytics endpoint a Microsoft FabricbanTárház a Microsoft FabricbanAdatbázis a Microsoft Fabricban

Ha alapértelmezés szerint el szeretné távolítani a FOR JSON záradék JSON-kimenetét körülvevő szögletes zárójeleket, adja meg a WITHOUT_ARRAY_WRAPPER beállítást. Ezzel a beállítással egysoros eredménnyel egyetlen JSON-objektumot hozhat létre kimenetként, nem pedig egyetlen elemet tartalmazó tömböt.

Ha ezt a beállítást többsoros eredménnyel használja, az eredmény nem lesz érvényes JSON, mivel több elem van, és hiányoznak a szögletes zárójelek.

Példa (egysoros eredmény)

Az alábbi példa a FOR JSON záradék kimenetét mutatja be a WITHOUT_ARRAY_WRAPPER beállítással és anélkül.

Query

SELECT 2015 as year, 12 as month, 15 as day  
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 

Eredmény a WITHOUT_ARRAY_WRAPPER beállítással

{
    "year": 2015,
    "month": 12,
    "day": 15
} 

Eredmény (alapértelmezett) az WITHOUT_ARRAY_WRAPPER beállítás nélkül

[{
    "year": 2015,
    "month": 12,
    "day": 15
}]

Példa (többsoros eredmény)

Íme egy másik példa egy FOR JSON záradékra a WITHOUT_ARRAY_WRAPPER lehetőséggel és anélkül. Ez a példa többsoros eredményt hoz létre. A kimenet érvénytelen JSON, mivel hiányoznak a szögletes zárójelek, és több elemet tartalmaz.

Query

SELECT TOP 3 SalesOrderNumber, OrderDate, Status  
FROM Sales.SalesOrderHeader  
ORDER BY ModifiedDate  
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 

Eredmény a WITHOUT_ARRAY_WRAPPER beállítással

{
    "SalesOrderNumber": "SO43662",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43661",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43660",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
} 

Eredmény (alapértelmezett) az WITHOUT_ARRAY_WRAPPER beállítás nélkül

[{
    "SalesOrderNumber": "SO43662",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43661",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43660",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}]

További információ a JSON-ról az SQL Database Engine-ben

A beépített JSON-támogatás vizuális bemutatásához tekintse meg az alábbi videókat: