如何从数据列表创建json结构? [英] How to create json structure from list of data?

查看:41
本文介绍了如何从数据列表创建json结构?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用列表对象中的嵌套对象创建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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆