Как создать массив объектов в JSON из данных в таблице SQL с помощью SQL-запроса?

Я хочу создать массив объектов в 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"
       }
    }
  ]
 }

Может кто-нибудь, пожалуйста, помогите мне?

Ваш запрос не будет выполняться, поскольку имена JSON не могут совпадать в одном и том же объекте. Пожалуйста исправьте

Serg 17.03.2022 18:35

@Serg Да, это неправильно. Итак, если я хочу добавить еще один объект в свой массив, как мне поступить в этом случае?

blac040 17.03.2022 18:41

@Серг, я изменился. Не могли бы вы мне помочь мне сейчас?

blac040 17.03.2022 18:48
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, это сработает...

select [Name] as [ID.FirstName], schoolName as [School.School_Name] 
from Details 
for json path, root('Students')

Я посмотрел документы MS для команды «для json». Я не думаю, что вам нужно разделить поля выбора так, как вы это сделали. Кроме того, я добавил скобки вокруг «Имени», потому что память подсказывает мне, что это зарезервированное слово, и вы можете заставить его рассматривать его как имя поля с помощью скобок.

Спасибо за ответ. Но если мой желаемый вывод должен быть похож на { "Общество": "Англия", "Студенты": [ { "Идентификатор": { "Имя": "Гарри" } }, { "Школа": { "School_Name": "St .Школа Стефана" } } ] }

blac040 17.03.2022 18:57

Тогда я думаю, что root может не работать

blac040 17.03.2022 18:58

И корень и без обертки массива не могут использоваться вместе

blac040 17.03.2022 19:02

Хорошо... Я думаю, что удаление команды для пропуска оболочки массива может дать вам то, что вы искали. У меня нет возможности проверить это.

Kevin 17.03.2022 19:04

Другие вопросы по теме