使用 OPENJSON 函数解析 JSON 文本

OPENJSON 函数解析 JSON 文本并返回多个输出。应返回的值使用 WITH 子句中定义的路径指定。如果没有为某些列指定路径,则列名称将用作路径。此函数将返回值强制转换为 WITH 子句中定义的 SQL 类型。如果应返回某个对象/数组,则必须在列定义中指定 AS JSON 选项。

DECLARE @json NVARCHAR(100) = '{"id": 1, "user":{"name":"John"}, "skills":["C#","SQL"]}'

SELECT * 
FROM OPENJSON (@json)
    WITH(Id int '$.id',
        Name nvarchar(100) '$.user.name',
        UserObject nvarchar(max) '$.user' AS JSON,
        Skills nvarchar(max) '$.skills' AS JSON,
        Skill0 nvarchar(20) '$.skills[0]')

结果

ID 名称 UserObject 技能 Skill0
1 约翰 { 约翰} [ C#SQL] C#