Как сериализовать в массив JSON? - PullRequest
0 голосов
/ 18 июня 2019

Я хотел бы сериализовать следующее в простой массив строк , а не объектов.

DECLARE @json NVARCHAR(MAX) = '["Developer", "Designer"]'

SELECT x.position
FROM (
    SELECT position
    FROM OPENJSON(@json)
    WITH (position nvarchar(50) '$')
) x
FOR JSON PATH

Когда я запускаю вышеупомянутое, я получаю: [{position: "Developer"}, {position: "Designer}]

Но я хочу: ["Developer", "Designer"]

Как бы я это сделал?

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Я не думаю, что вы можете сделать это с "FOR JSON".
Итак, вернемся к строковым операциям:

DECLARE @json NVARCHAR(MAX) = '["Developer", "Designer"]'

SELECT '["'+STRING_AGG( STRING_ESCAPE(x.position, 'json'),'", "') + '"]'
FROM (
    SELECT position 
    FROM OPENJSON(@json)
    WITH (position nvarchar(50) '$')
) x
0 голосов
/ 18 июня 2019

Попробуйте объявить свой JSON следующим образом ...

DECLARE @json NVARCHAR(MAX) = '{{"position": "Developer"}, {"position": "Designer"}}'

hth,

-n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...