如何从数据列表创建json结构? [英] How to create json structure from list of data?
问题描述
我想使用列表对象中的嵌套对象创建json结构.
I want to create json structure with nested object from my list object.
这是我的课程:
public class Employee
{
public int EmployeeId { get; set; }
public int Skillssetpoints { get; set; }
public string Name { get; set; }
public Nullable<System.DateTime> Date { get; set; }
}
public class EmployeeModel
{
public int EmployeeId { get; set; }
public List<int> Skillssetpoints { get; set; }
public string Name { get; set; }
public Nullable<System.DateTime> Date { get; set; }
}
记录如下:
EmployeeId SkillssetPoints Date
1 10 4/5/2016 16:12:12
2 12 3/5/2016 17:12:12
3 4 8/5/2016 8:12:12
4 20 1/5/2016 2:12:12
这是我获取数据的方式:
This is how i am getting data:
var data=context.Employee.Tolist();
获取数据后,我想使用 EmployeeModel
从以上数据创建此 json结构并返回:
After getting data i want to create this json structure from above data using EmployeeModel
and return:
预期输出:
{"Date":"8-5-2016 08:12:12","SkillssetPoints":[4,10,12,20]}
在日期"字段中,我将采用最高日期",因此 2016年8月5日
和 SkillssetPoints 将按升序排列.
In Date field i would take Highest date so 8-5-2016
and SkillssetPoints will be order by ascending.
如何使用我的 EmployeeModel 类创建此json结构?
How to create this json structure with my EmployeeModel class??
推荐答案
添加对nuget包Newtonsoft.Json的引用,然后使用...
Add a reference to the nuget package Newtonsoft.Json then use ...
string result = JsonConvert.Serialize(data);
看起来您需要通过先进行投影然后将结果序列化来将db中的数据转换为模型格式...
It looks like you need to translate the data in your db to the model format by doing a projection first then serialize the result ...
var groupedData = data
.GroupBy(s => s.EmployeeId)
.OrderBy(s => s.Date)
.Select(g => new EmployeeModel {
EmployeeId = g.Key,
Name = g.First().Name,
Date = g.First().Date,
Skillssetpoints = g.Select(s => s.Skillssetpoints).OrderBy(i => i).ToList()
});
那应该产生这个模型的集合...
That should produce a collection of this model ...
public class EmployeeModel
{
public int EmployeeId { get; set; }
public List<int> Skillssetpoints { get; set; }
public string Name { get; set; }
public DateTime? Date { get; set; }
}
...当我这样做时...
... when I do this ...
var data = new List<EmployeeModel> {
new EmployeeModel { EmployeeId = 1, Name = "Homer Simpson", Skillssetpoints = new List<int> { 1,2,3,4 }, Date = DateTime.Now },
new EmployeeModel { EmployeeId = 2, Name = "Marge Simpson", Skillssetpoints = new List<int> { 1,2,3,4 }, Date = DateTime.Now },
new EmployeeModel { EmployeeId = 3, Name = "Lisa Simpson", Skillssetpoints = new List<int> { 1,2,3,4 }, Date = DateTime.Now },
new EmployeeModel { EmployeeId = 4, Name = "Bart Simpson", Skillssetpoints = new List<int> { 1,2,3,4 }, Date = DateTime.Now }
};
var result = JsonConvert.SerializeObject(data);
我得到这个输出...
I get this output ...
[
{
"EmployeeId": 1,
"Skillssetpoints": [1,2,3,4],
"Name": "Homer Simpson",
"Date": "2016-04-05T11:42:09.9126748+01:00"
},
{
"EmployeeId": 2,
"Skillssetpoints": [1,2,3,4],
"Name": "Marge Simpson",
"Date": "2016-04-05T11:42:09.9126748+01:00"
},
{
"EmployeeId": 3,
"Skillssetpoints": [1,2,3,4],
"Name": "Lisa Simpson",
"Date": "2016-04-05T11:42:09.9126748+01:00"
},
{
"EmployeeId": 4,
"Skillssetpoints": [1,2,3,4],
"Name": "Bart Simpson",
"Date": "2016-04-05T11:42:09.9126748+01:00"
}
]
这篇关于如何从数据列表创建json结构?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!