JSON 到 SQL Table 具有嵌套属性

JSON to SQL Table with nested properties

我正在尝试根据以下 JSON 结构开发数据库 table 结构。 “必填字段”很简单,我 table 为这些设置。但是,我坚持如何创建模式以将“配置”及其嵌套属性存储在 SQL 数据库中。任何帮助将不胜感激。谢谢

{
    "requiredFields": [
        "hello",
        "world"
    ],
    "configuration": {
        "hello": {
            "fallbacks": [
                {
                    "type": "constant",
                    "value": "30"
                }
            ]
        },
        "world": {
            "fallbacks": [
                {
                    "type": "fromInputFile",
                    "value": "patientFirstName"
                },
                {
                    "type": "fromInputFile",
                    "value": "subscriberFirstName"
                },
                {
                    "type": "constant",
                    "value": "alpha"
                }
            ]
        }
    }
}

看起来您可以将其存储在一个 table

CREATE TABLE ConfigurationFallbacks (
    field nvarchar(100),
    type nvarchar(100),
    value nvarchar(100)
);

您可能还想添加另一个 table 来仅存储 field 值,上面的 table 就是 foreign-keyed。

你可以这样插入:

INSERT ConfigurationFallbacks (field, type, value)
SELECT
  keys.[key],
  j.type,
  j.value
FROM OPENJSON(@json, '$.configuration') keys
CROSS APPLY OPENJSON(keys.value, '$.fallbacks')
  WITH (
    type nvarchar(100),
    value nvarchar(100)    
  ) j;

第一个 OPENJSON 调用没有架构,因此它 returns 一组 key value 对。