SQL Server 2016: Transformando las matrices de objetos JSON en matrices de valor
Las capacidades JSON de SQL Server 2016 son robustas, pero extraer estructuras de datos específicas a veces requiere enfoques creativos. Este ejemplo demuestra transformar una matriz JSON de objetos en una matriz más simple de valores.
el desafío:
Considere una consulta que genera una matriz JSON de objetos:
SELECT (SELECT item_id
FROM #temp
FOR JSON PATH, root('ids'))
Esto produce JSON así:
{
"ids": [
{"item_id": "1234"},
{"item_id": "5678"},
{"item_id": "7890"}
]
}
El objetivo es reestructurar esto en una matriz JSON que contiene solo los valores item_id
:
{
"ids": [
"1234",
"5678",
"7890"
]
}
la solución:
La clave es un proceso de dos pasos que aprovecha XML como intermediario:
SELECT
JSON_QUERY('[' STUFF(( SELECT ',' '"' item_id '"'
FROM #temp FOR XML PATH('')),1,1,'') ']' ) ids
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
Este código primero usa para la ruta xml ('')
para concatenar los valores item_id
, rodeando cada uno con citas dobles. Stuff
elimina la coma principal. El resultado se envuelve en soportes cuadrados para crear una matriz JSON válida, que json_query
parses. Finalmente, para la ruta JSON, sin_array_wrapper
formatea la salida como una matriz JSON simple. Esto efectivamente aplana la matriz de objeto JSON original en la matriz de valor deseada.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3