Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a: SQL Server 2016 (13.x) y versiones
posteriores y Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (solo para SQL pool sin servidor)
punto final de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
Para mantener el control total sobre la salida de la FOR JSON cláusula , especifique la PATH opción .
El modo PATH le permite crear objetos contenedores y anidar propiedades complejas. Los resultados reciben el formato de una matriz de objetos JSON.
La alternativa es usar la AUTO opción para dar formato a la salida automáticamente en función de la estructura de la SELECT instrucción .
- Para obtener más información sobre la
AUTOopción, consulte Format JSON Output Automatically with AUTO Mode (Formato de salida JSON automáticamente con el modo AUTO ). - Para obtener información general sobre ambas opciones, consulte Formato de los resultados de la consulta como JSON con FOR JSON.
Estos son algunos ejemplos de la FOR JSON cláusula con la PATH opción . Aplique formato a los resultados anidados utilizando nombres de columna separados por puntos o consultas anidadas, tal como se muestra en los ejemplos siguientes. De forma predeterminada, los valores NULL no se incluyen en FOR JSON la salida.
Azure Data Studio es el editor de consultas recomendado para las consultas JSON porque da formato automáticamente a los resultados JSON (como se muestra en este artículo), en lugar de mostrar una cadena plana.
Ejemplo: nombres de columna separados por puntos
La siguiente consulta da formato a las cinco primeras filas de la tabla AdventureWorks Person como JSON.
La FOR JSON PATH cláusula usa el alias de columna o el nombre de columna para determinar el nombre de clave en la salida JSON. Si un alias contiene puntos, la PATH opción crea objetos anidados.
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"
}
}]
Ejemplo: varias tablas
Si se hace referencia a más de una tabla en una consulta, FOR JSON PATH anida cada columna mediante su alias. La consulta siguiente crea un objeto JSON por par (OrderHeader, OrderDetails) unido a la consulta.
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
}
}]
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:
- JSON as a bridge between NoSQL and relational worlds (JSON como puente entre los universos NoSQL y relacional)