.net - 如何将以下 SQL 数据转换为以下给定的 JSON 数据
问题描述
我从 SQL 获取以下数据。
Person Occupation Salary Count
Ajay Farmer 5000 1
Ajay Barber 6000 1
Ajay Carpenter 8000 1
Mahesh Farmer 3000 1
Mahesh Barber 8000 1
Mahesh Carpenter 9000 1
我需要将其转换为以下 JSON 格式:我尝试过,但未能应用适当的组。
{
"Ajay": [
{
"Job Details": [
{
"Occupation": "Farmer",
"Salary": "5000",
"count": 1
},
{
"Occupation": "Barber",
"Salary": "6000",
"count": 1
},
{
"Occupation": "Carpenter",
"Salary": "8000",
"count": 1
}
]
}
],
"Mahesh": [
{
"Job Details": [
{
"Occupation": "Farmer",
"Salary": "3000",
"count": 1
},
{
"Occupation": "Barber",
"Salary": "8000",
"count": 1
},
{
"Occupation": "Carpenter",
"Salary": "9000",
"count": 1
}
]
}
]
}
解决方案
更新为更符合 OP 的预期结果
用一点字符串操作
例子
Declare @YourTable Table ([Person] varchar(50),[Occupation] varchar(50),[Salary] int,[Count] int) Insert Into @YourTable Values
('Ajay','Farmer',5000,1)
,('Ajay','Barber',6000,1)
,('Ajay','Carpenter',8000,1)
,('Mahesh','Farmer',3000,1)
,('Mahesh','Barber',8000,1)
,('Mahesh','Carpenter',9000,1)
;with cte as (
Select Person,JS= (Select [Occupation]=Occupation
,[Salary] =Salary
,[Count] =Count
From @YourTable where Person=A.Person
FOR JSON PATH,Root('Job Details')
)
From @YourTable A
Group By Person
)
Select '{'+string_agg('"'+string_escape(Person,'json')+'":['+JS+']',',')+'}'
From cte
结果
{
"Ajay": [{
"Job Details": [{
"Occupation": "Farmer",
"Salary": 5000,
"Count": 1
}, {
"Occupation": "Barber",
"Salary": 6000,
"Count": 1
}, {
"Occupation": "Carpenter",
"Salary": 8000,
"Count": 1
}]
}],
"Mahesh": [{
"Job Details": [{
"Occupation": "Farmer",
"Salary": 3000,
"Count": 1
}, {
"Occupation": "Barber",
"Salary": 8000,
"Count": 1
}, {
"Occupation": "Carpenter",
"Salary": 9000,
"Count": 1
}]
}]
}
推荐阅读
- pandas - 以正确的格式读取日期
- javascript - 加载没有“新图像()”的图像
- gradle - 从 gradle 中的几个冲突的传递依赖项中强制执行最高版本
- css - Is there a way to keep the content inside a mat-card responsive?
- python - Filtering languages queryset looping on tuple (code, name_translated)
- r - 如何验证开源 R 包;即消除恶意包
- php - 如何使用 PHP 和 MYSQL 在表中插入多行?
- sql - Dtd 或 Xsd Sql 定义
- batch-file - 使用包含 10,000 个项目的列表时批处理文件崩溃
- node.js - How to read an image and text at the same time in Loopback/NodeJs