使用 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#