Добавьте элемент в начале JSON, используя JSON_MODIFY - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь построить JSON из следующей таблицы

 name | flag 
------+------
 foo  | fail 
 bar  | pass 

используя запрос,

DECLARE @JSONDATA nvarchar(MAX) = (SELECT [name], [flag]
FROM test
FOR JSON AUTO, ROOT('students'))
SET @JSONDATA = JSON_MODIFY(@JSONDATA, '$.class','10')

Сгенерированный JSON здесь

{
  "students": [
    {
      "name": "foo",
      "flag": "fail"
    },
    {
      "name": "bar",
      "flag": "pass"
    }
  ],
  "class": "10"
}

Мне нужен элемент class в самом первом узле JSON. Есть ли способ, используя JSON_MODIFY?

Fiddle

1 Ответ

2 голосов
/ 02 апреля 2019

При потере форсирования последовательности с помощью модификации.

Возможно, альтернатива

Select class=10
      ,students =  (SELECT [name], [flag] FROM test FOR JSON AUTO)
  For JSON path, without_array_wrapper 

Возвращает

{
    "class": 10,
    "students": [{
        "name": "foo",
        "flag": "fail"
    }, {
        "name": "bar",
        "flag": "pass"
    }]
}

EDIT- Обновлен SELECT в соответствии с предложением GSerg

...