Quitar corchetes de JSON: Opción de WITHOUT_ARRAY_WRAPPER

Aplicable a: SQL Server 2016 (13.x) y versiones posteriores Base de datos SQL de AzureInstancia administrada de SQL de AzureAzure Synapse Analytics (solo grupo de SQL sin servidor)Punto de conexión de análisis de SQL en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

Para quitar los corchetes que rodean la salida JSON de la cláusula FOR JSON de manera predeterminada, especifique la opción WITHOUT_ARRAY_WRAPPER. Use esta opción con un resultado de fila única para generar un objeto JSON único como resultado en lugar de una matriz con un elemento único.

Si usa esta opción con un resultado de varias filas, el resultado no es un valor JSON válido debido a la existencia de varios elementos y los corchetes que faltan.

Ejemplo (resultado de fila única)

En el ejemplo siguiente se muestra la salida de la FOR JSON cláusula con y sin la WITHOUT_ARRAY_WRAPPER opción .

Query

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

Resultado con la WITHOUT_ARRAY_WRAPPER opción

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

Resultado (valor predeterminado) sin la WITHOUT_ARRAY_WRAPPER opción

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

Ejemplo (resultado de varias filas)

Este es otro ejemplo de una FOR JSON cláusula con y sin la WITHOUT_ARRAY_WRAPPER opción . En este ejemplo, se genera un resultado de varias filas. El resultado no es un valor JSON válido debido a la existencia de varios elementos y los corchetes que faltan.

Query

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

Resultado con la WITHOUT_ARRAY_WRAPPER opción

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

Resultado (valor predeterminado) sin la WITHOUT_ARRAY_WRAPPER opción

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

Más información sobre JSON en el motor de base de datos de SQL

Para obtener una introducción visual a la compatibilidad integrada con JSON, consulte los vídeos siguientes: