c# - 如何从数据列表创建 json 结构?

标签 c# .net json linq asp.net-web-api

我想用我的列表对象中的嵌套对象创建 json 结构。

这是我的课:

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

这就是我获取数据的方式:

var data=context.Employee.Tolist();

获取数据后,我想使用 EmployeeModel 从上述数据创建此 json 结构 并返回:

预期输出:

 {"Date":"8-5-2016 08:12:12","SkillssetPoints":[4,10,12,20]}

在日期字段中,我将采用最高日期,因此 8-5-2016SkillssetPoints 将按升序排列。

如何使用我的 EmployeeModel 类创建此 json 结构??

最佳答案

添加对 nuget 包 Newtonsoft.Json 的引用,然后使用 ...

string result = JsonConvert.Serialize(data); 

看起来您需要先进行投影,然后序列化结果,然后将数据库中的数据转换为模型格式...

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()
    });

那应该产生这个模型的集合......

public class EmployeeModel
{
    public int EmployeeId { get; set; }
    public List<int> Skillssetpoints { get; set; }
    public string Name { get; set; }
    public DateTime? Date { get; set; }
}

...当我这样做时...

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);

我得到这个输出......

[
    {
        "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"
    }
]

关于c# - 如何从数据列表创建 json 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36423598/

相关文章:

c# - '??' 在 C# 中是什么意思?

.net - 如何获取我的进程加载的文件列表?

angularjs - 如何使用 json 字符串分配 $scope 变量

c# - 快速求幂实现

c# - 如何跨操作系统接受具有指定内容类型的文件

c# - Oracle AQ 主题队列使用 ODP.NET 出队

c# - 从 DateTime 获取时区

javascript - 如何使用Ajax从本地JSON获取数据?

javascript - 在javascript模板中格式化json日期

c# - 在哪里可以找到 ASP.NET Core MVC 中的模型绑定(bind)错误?