如何使用变量引用 JSON 列表值

How to reference JSON list value with a variable

我正在尝试这样做:

JSON_VALUE(@jsondata, CONCAT('$.[', @count, '].Name')

这样我就可以使用变量引用 json 列表中的值,但是 JSON_VALUE 函数的第二个参数(JSON 路径)需要一个字符串文字。

有没有办法让函数将字符串读取为字符串文字,或者有其他方法来引用带有变量的列表?

谢谢。

您可以通过使用 OPENJSON.

将其解构为 table 来使用变量寻址列表

例如,给定:

declare @jsondata nvarchar(max) = '[
{"Name":"zero","Value":"cero"}, 
{"Name":"one","Value":"uno"}, 
{"Name":"two","Value":"dos"}, 
{"Name":"three","Value":"tres"} 
]'

declare @count int set @count = 1
declare @val nvarchar(50) 
set @val = (select JSON_VALUE(value, '$.Name') from OPENJSON(@JsonData) d where d."key" = @count)
select @count, @val

对于更高级的方法,您可以使用描述您感兴趣的结构和元素的架构查询 JSON: