SQL Server анализирует значение json со специальным символом во вложенных свойствах

У меня есть значение json, как это и хочу запросить его с SQL Server:

declare @buffer nvarchar(max)={"request": {"user-agent": "Mozilla/5.0" } }

Я искал и обнаружил, что для специальных значений в свойствах json мы можем использовать ""

но он не будет работать для второго и вложенного уровней, таких как пользовательский агент здесь

select json_query(@buffer,'$.request."user-agent"')

Это работает, если значение json так:

select json_query(@buffer,'$."req-uest"')

но не на этом уровне:

declare @buffer nvarchar(max)='{"request": {"user-agent": "Mozilla/5.0" } }'

select json_query(@buffer,'$.request."user-agent"')

1 ответ

Решение

Поскольку вы возвращаете одно значение, а не массив или объект, вы должны использовать JSON_VALUE вместо JSON_QUERY:

select json_value(@buffer,'$.request."user-agent"')
Другие вопросы по тегам