Я хочу создать массив объектов в json из запроса sql. Поэтому я создал запрос SQL следующим образом:
Select society as Society,
(select Name as [ID.FirstName],schoolName as [School.School_Name] from Details for json path ) as Students
From Details
For json path, WITHOUT_ARRAY_WRAPPER
Я хотел, чтобы мой результат JSON выглядел так:
{ "Society":"England",
"Students":[
{
"Id":{
"FirstName":"Harry"
}
},
{
"School":{
"School_Name":"St.Stephan School"
}
}
]
}
Я получаю другой вывод, но я знаю, что это не общий способ написания кода.
{ "Society":"England",
"Students":[
{
"Id":{
"FirstName":"Harry"
},
"School":{
"School_Name":"St.Stephan School"
}
}
]
}
Может кто-нибудь, пожалуйста, помогите мне?
@Serg Да, это неправильно. Итак, если я хочу добавить еще один объект в свой массив, как мне поступить в этом случае?
@Серг, я изменился. Не могли бы вы мне помочь мне сейчас?
Я думаю, это сработает...
select [Name] as [ID.FirstName], schoolName as [School.School_Name]
from Details
for json path, root('Students')
Я посмотрел документы MS для команды «для json». Я не думаю, что вам нужно разделить поля выбора так, как вы это сделали. Кроме того, я добавил скобки вокруг «Имени», потому что память подсказывает мне, что это зарезервированное слово, и вы можете заставить его рассматривать его как имя поля с помощью скобок.
Спасибо за ответ. Но если мой желаемый вывод должен быть похож на { "Общество": "Англия", "Студенты": [ { "Идентификатор": { "Имя": "Гарри" } }, { "Школа": { "School_Name": "St .Школа Стефана" } } ] }
Тогда я думаю, что root может не работать
И корень и без обертки массива не могут использоваться вместе
Хорошо... Я думаю, что удаление команды для пропуска оболочки массива может дать вам то, что вы искали. У меня нет возможности проверить это.
Ваш запрос не будет выполняться, поскольку имена JSON не могут совпадать в одном и том же объекте. Пожалуйста исправьте