json - 如何在 SQL 中使用选择值作为 JSON 的键
问题描述
我有一个 tsql 存储过程,它生成我正在使用的数据库的 json 文件。json 文件的某个部分是具有名称、值和需求变量的属性数组。这部分 JSON 文件如下所示:
"Properties": [
{
"PropertyName": "Foo"
"PropertyValue": "Bar"
"Required": "True"
},
{
"PropertyName": "Foo2"
"PropertyValue": "Bar2"
"Required": "False"
}
]
这是作为创建整个 JSON 文档的更大 SQL 查询的子查询生成的:
SELECT,...,
(SELECT P.Name as PropertyName, P.Value as PropertyValue, P.Requirement as Required
FROM Properties P FOR JSON PATH) as Properties
FROM Foo
FOR JSON PATH
我希望对 JSON 文件进行布局,因此 PropertyName 的值是其他两个值的键:
"Properties" [
{"Foo": {{"PropertyValue": "Bar"},{"Required": "True"}},
etc.
]
理想情况下,代码可能类似于:
(Select P.Value as [[P.Name].PropertyValue], P.Requirement as [[P.Name].Required]
FROM Properties P
FOR JSON PATH)
但显然这不是合法的表达方式。有什么方法可以在 SQL 框架中执行此操作,还是应该在创建文件后对其进行修改?
解决方案
推荐阅读
- javascript - Typescript:如何正确使用泛型来正确推断函数的返回类型?
- core-data - SwiftUI & Core Data - 如何在谓词中使用父记录?
- javascript - 如何组合对象数组中的每个值?
- sql-server - 数据库速度慢,日志文件夹中有很多 sqldump 文件
- java - 当我使用 javac 编译几个 .java 文件时,我得到了一些“重复类”错误,但我在我的代码中找不到错误
- vue.js - Vue.http.interceptors.push undefined 不是一个对象
- python - 使用计算机视觉的方案中的符号检测
- java - RecyclerView 适配器 - 只有创建视图层次结构的原始线程才能接触其视图
- json - 如何应用基于点的 JSONPath 来播放 JsValue
- vim - Vim - 移动到具有相同缓冲区的其他窗口时调用缓冲区事件