将Json转换为Sql Server中的表

Gre*_*een 5 sql t-sql json

我有以下 Json:

{
  "archeTypes": [
    {
      "archeTypeId": 12,
      "elements": [
        {
          "elementId": 6,
          "value": "string6"
        },
        {
          "elementId": 7,
          "value": "string7"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

DECLARE @json NVARCHAR(MAX);
SET @json='{"archeTypes":[{"archeTypeId":12,"elements":[{"elementId":6,"value":"string6"},{"elementId":7,"value":"string7"}]}]}';
SELECT *
FROM OPENJSON(@json)
    WITH (
    ArcheTypeId INT '$.archeTypes.archeTypeId',
    ElementId INT '$.archeTypes.elements.elementId',
    Value NVARCHAR(max) '$.archeTypes.elements.value'
    );
Run Code Online (Sandbox Code Playgroud)

这是我想要的表:

原型类型ID 元素ID 价值
12 6 字符串6
12 7 字符串7

如何将 json 转换为表格?

nov*_*Net 2

这有帮助吗?(使用cross apply

DECLARE @json NVARCHAR(MAX);
SET @json='{"archeTypes":[{"archeTypeId":12,"elements":[{"elementId":6,"value":"string6"},{"elementId":7,"value":"string7"}]}]}';
SELECT archeTypes.ArcheTypeId,elements.ElementId,elements.Value
FROM OPENJSON(@json)
    WITH 
        (
            archeTypes nvarchar(max) as JSON
        ) as archeType cross apply
        OPENJSON(archeType.archeTypes)
        WITH
            (
                archeTypeId INT,
                elements nvarchar(max) as JSON
            ) as archeTypes cross apply
            OPENJSON(archeTypes.elements)
            WITH
                (
                    elementId INT,
                    value nvarchar(max)
                ) as elements
    ;
Run Code Online (Sandbox Code Playgroud)

数据库<>小提琴