Я пытаюсь преобразовать строку данных в массив JSON, содержащий один объект. Один столбец содержит XML, в котором описывается еще один отдельный объект, преобразованный в массив.
Мой запрос:
WITH r AS (
SELECT TOP 1 * FROM Table1
ORDER BY RecordID ASC)
SELECT
NEWID() AS 'Report.ReportUUID',
Value1 as 'Report.Value1',
Value2 as 'Report.Value2',
DateTime as 'Report.DateTime',
UserID as 'Report.UserID',
'Medium' as 'Report.Priority',
NEWID() as 'Report.Item.ItemUUID',
XML.value('category[1]', 'varchar(100)') as 'Report.Item.Category',
XML.value('description[1]', 'varchar(1000)') as 'Report.Item.Description',
XML.value('date[1]', 'varchar(100)') AS 'Report.Item.DateTime'
FROM r
FOR JSON PATH, ROOT('DataSet');
Желаемый результат:
{
"DataSet" : {
"Report" : [
{
"ReportUUID" : "uuid here",
"Value1" : "value1",
"Value2" : "value2",
"DateTime" : "2020-04-06 16:00:00",
"UserID" : "1234",
"Priority" : "Medium",
"Item" : [
{
"ItemUUID" : "uuid here",
"Category" : "01",
"Description" : "Desc",
"DateTime" : "2020-04-05 08:00:00"
}
]
}
]
}
}
Факт. output:
{
"DataSet": [
{
"Report": {
"ReportUUID" : "uuid here",
"Value1": "value1",
"Value2": "value2",
"DateTime": "2020-04-06 16:00:00",
"UserID": "1234",
"Priority": "Medium",
"Item": {
"ItemUUID": "uuid here",
"Category": "01",
"Description": "Desc",
"DateTime": "2020-04-05 08:00:00"
}
}
}
]
}
DataSet
должен быть одним объектом, а Report
и Item
должны быть массивами, содержащими один объект. Может кто-нибудь помочь с форматированием данных, как это?