sql - 如何编写 SQL 查询来生成 json 对象内的空 json 对象
问题描述
我需要一个 SQL 查询来获取下面的 JSON 对象。我试过了FOR JSON PATH
。Upto Model 对象我可以得到它。但内部 JSON 对象不会出现。
{
"Model": [
{
"ModelName": "Registration",
"Version": 1,
"Student": [
{
"StudentID": null,
"StudentName": null,
"Work": [
{
"WorkID": null,
"WorkNameName": null,
"Note": [
{
"NoteID": null,
"Comments": null,
"Visible": [
{
"IsVisible": null
}
]
}
]
}
]
}
]
}
]
}
解决方案
定义一个nvarchar(max)
变量(它是一个有效的 JSON 对象)始终是一种选择,但您可以尝试SELECT
使用FOR JSON AUTO
. 在这种情况下,输出 JSON 的结构取决于 SELECT 语句的结构。
陈述:
DECLARE @ScriptData nvarchar(max)
SET @ScriptData =
(
SELECT
Model.ModelName, Model.Version,
Student.StudentID, Student.StudentName,
Work.WorkID, Work.WorkNameName,
Note.NoteID, Note.Comments,
Visible.IsVisible
FROM (VALUES ('Registration', 1)) Model (ModelName, Version)
CROSS APPLY (VALUES (NULL, NULL)) Student (StudentID, StudentName)
CROSS APPLY (VALUES (NULL, NULL)) Work (WorkID, WorkNameName)
CROSS APPLY (VALUES (NULL, NULL)) Note (NoteID, Comments)
CROSS APPLY (VALUES (NULL)) Visible (IsVisible)
FOR JSON AUTO, ROOT('Model'), INCLUDE_NULL_VALUES
)
结果:
{
"Model":[
{
"ModelName":"Registration",
"Version":1,
"Student":[
{
"StudentID":null,
"StudentName":null,
"Work":[
{
"WorkID":null,
"WorkNameName":null,
"Note":[
{
"NoteID":null,
"Comments":null,
"Visible":[
{
"IsVisible":null
}
]
}
]
}
]
}
]
}
]
}
推荐阅读
- sql - 使用 t-sql MERGE 复制或创建数据
- angular - qrcode 扫描仪在 ionic 应用程序中不起作用
- java - 如何切换到另一个活动以及更改该活动中的片段?
- swift - 如何在具有平移手势的视图上添加滑动手势?
- flatten - 如何使用 Jolt 用键展平包含 n 个对象的 json 数组?
- prestashop - 需要有关 prestashop 1.7.x 的最小模块的帮助
- python-3.x - 无法从“colorama”导入名称“init”
- android - Android WebView when refresh it always goes to home page
- python - Tensorflow:如何训练神经网络?
- ruby-on-rails - 我的 CREATE & DELETE 路线不起作用不明白为什么?