Получение ключей и значений из массива JSON в SQL Server 2016 - PullRequest
0 голосов
/ 08 января 2020

Работает в SQL Server 2016 в процедуре, и мне передается объект JSON в переменной nvarchar. Переменная выглядит следующим образом

'{"and": [{"agentId": 1}, {"status": "In Progress"}, {"or": [{"who": {" например, ":"% Alex% "}}, {" status ":" Closed "}]}]} '

Мне нужно поместить его в такую ​​таблицу

Desired Table Output

SELECT x.[Key], x.[Value] 
FROM OPENJSON(@whereString, '$') AS x;

Это работает, пока не попадет во встроенный массив. Я не буду заранее знать имена ключей, поэтому думаю, что это позаботится о JSON_Value и JSON_Query

1 Ответ

0 голосов
/ 09 января 2020

Я поступил неправильно и сделал это намного сложнее, чем нужно.

Использование запроса SELECT x. [Key] в качестве keyString, x. [Value] в качестве valueString FROM OPEN JSON ( @JSONString, '$') AS x выдаст мне ключи и значения верхнего уровня во временную таблицу. Тогда, если значение ключа для строки равно 'и' или 'или' (эти значения ключа будут иметь массивы как valueString), я могу рекурсивно вызвать тот же SQL, используя только значение valueString для этой строки, и оно будет хорошо разделять их для меня.

...