Ath*_*hul 2 sql database sql-server json stored-procedures
我有一个嵌套的JSON文件,如下所示(其中条件和规则可以嵌套到多个级别)
{
"condition": "and",
"rules": [
{
"field": "26",
"operator": "=",
"value": "TEST1"
},
{
"field": "36",
"operator": "=",
"value": "TEST2"
},
{
"condition": "or",
"rules": [
{
"field": "2",
"operator": "=",
"value": 100
},
{
"field": "3",
"operator": "=",
"value": 12
},
{
"condition": "or",
"rules": [
{
"field": "12",
"operator": "=",
"value": "CA"
},
{
"field": "12",
"operator": "=",
"value": "AL"
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想将此 JSON(json 文件中的条件和规则字段可以嵌套到多个级别)保存到 SQL Server 表中,然后希望从这些创建的表构造相同的 JSON。我怎样才能做到这一点 ?我还计划从这些表中获取其他 json 格式,这就是决定将 json 拆分为表列的原因。
我认为需要创建一个递归 sql 函数来执行相同的操作。
我创建了下表来保存相同的 json 。
CREATE TABLE [Ruleset]
([RulesetID] [BIGINT] IDENTITY(1, 1) NOT NULL PRIMARY KEY,
[Condition] [VARCHAR](50) NOT NULL,
[ParentRuleSetID] [BIGINT] NULL
);
GO
CREATE TABLE [Rules]
([RuleID] [BIGINT] IDENTITY(1, 1) NOT NULL PRIMARY KEY,
[Fields] [VARCHAR](MAX) NOT NULL,
[Operator] [VARCHAR](MAX) NOT NULL,
[Value] [VARCHAR](MAX) NOT NULL,
[RulesetID] [BIGINT] NULL
FOREIGN KEY REFERENCES [Ruleset](RulesetID)
);
Run Code Online (Sandbox Code Playgroud)
插入脚本如下,
INSERT INTO [Ruleset] values
('AND',0),
('OR',1),
('OR',2)
INSERT INTO [Rules] values
('26','=','TEST1',1),
('364','=','TEST2',1),
('2','=','100',2),
('3','=','12',2),
('12','=','CA',3),
('12','=','AL',3)
Run Code Online (Sandbox Code Playgroud)
这些桌子够用吗?能保存所有详细信息吗?
附加我手动添加到这些表中的值。
我如何将此 JSON 保存到这些表中,然后通过存储过程或查询从这些表构造相同的 JSON?
请提供建议和样品!
| 归档时间: |
|
| 查看次数: |
7157 次 |
| 最近记录: |