sql - 将 JSON 文件保存到 SQL Server 数据库表
问题描述
我有一个嵌套的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"
}
]
}
]
}
]
}
我想将此 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)
);
插入脚本如下,
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)
这些表就够了吗?能保存所有细节吗?
手动附加我添加到这些表中的值。
我如何将此 JSON 保存到这些表中,然后通过存储过程或查询从这些表中构造相同的 JSON?
请提供建议和样品!
解决方案
实际上,您可以将列类型声明为 NVARCHAR(MAX),并将 json 字符串保存到其中。
推荐阅读
- c# - .net Channels:为什么消费者/读者在无界通道中一个接一个地连续消费生产者输出
- javascript - 将 Firebase Cloudstore 文档同步到 Google 表格时出现问题
- php - 如何根据包含特定字符串的 url 在页面上显示页脚小部件
- python - 如何在虚拟环境中使用 pip nodjs 安装 jupyterlab-plotly labextension?
- spring-data - 有什么方法可以强制弹簧不在映射中使用/创建“_class”字段?
- javascript - 如何循环遍历 DOM 以及单击 ID 时找到相应的类并在 React 中切换?
- excel - Deleting rows make script go in a loop
- r - 用于字符串大写(到标题大小写)的 R 包,排除某些填充词,例如葡萄牙语或其他非英语语言的文章?
- select - HeidiSQL 根据两个条件从两个表中选择列
- python - googleapiclient.errors.HttpError: HttpError 404