SQL Server 2016: преобразование массивов объектов JSON в массивы значений
]SQL Server 2016 Возможности JSON 2016 являются надежными, но извлечение конкретных структур данных иногда требует творческих подходов. Этот пример демонстрирует преобразование массива объектов JSON в более простой массив значений.
]The Challenge:
рассмотрим запрос, который генерирует массив JSON объектов:
]SELECT (SELECT item_id
FROM #temp
FOR JSON PATH, root('ids'))
это дает json как это: ]
{
"ids": [
{"item_id": "1234"},
{"item_id": "5678"},
{"item_id": "7890"}
]
}
Цель состоит в том, чтобы реструктурировать это в массив JSON, содержащий только item_id значения:
]
{
"ids": [
"1234",
"5678",
"7890"
]
}
решение:
ключ-это двухэтапный процесс, использующий XML в качестве посредника:
SELECT
JSON_QUERY('[' STUFF(( SELECT ',' '"' item_id '"'
FROM #temp FOR XML PATH('')),1,1,'') ']' ) ids
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
Этот код сначала использует для xml path ('') для объединения значений
item_id , окружая каждый с двойными кавычками.
материал удаляет ведущую запятую. Затем результат завершается в квадратные скобки, чтобы создать действительный массив JSON, который
json_query анализируется. Наконец,
для пути json, без_аррейки_WRAPPER форматирует вывод как простой массив JSON. Это эффективно выравнивает оригинальный массив объектов JSON в нужный массив значений.
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3