Compartir a través de


Eliminación de corchetes de JSON: opción WITHOUT_ARRAY_WRAPPER

Aplica a: SQL Server 2016 (13.x) y versiones posteriores y Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (solo para SQL pool sin servidor)punto final de SQL Analytics 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: