合并对象以获得MVC 4中唯一的json对象

本文关键字:对象 唯一 json MVC 合并 | 更新日期: 2023-09-27 18:05:50

我试图以不同于默认序列化的方式序列化对象。我有一个像这样的对象列表:

public class PausesByAgentModel
{
    public PausesByAgentModel()
    {
        this.Pauses = new Dictionary<string, string>();
    }
    [DisplayName( "Agent" )]
    public string AgentFullName { get; set; }
    public Dictionary<string, string> Pauses { get; set; }
}

该对象包含Agent的不同暂停以及字典中每个暂停的时间,因为暂停原因是动态的(键:暂停名称,值:字符串格式的时间)。如果我将这个对象序列化为JsonResult并在我的控制器方法中返回它,我会得到以下json:

{ 
    "data" : [
    { 
        "AgentFullName" : "John Doe", 
        [
            { "Break": "00:15:31" }, 
            { "Launch" : "01:01:23" }, 
            { "Mail" : "00:05:12" }
        ]
    } ] 
}

但是我需要暂停的位置就像同一个对象的属性一样,像这样:

{ 
    "data" : [
    { 
        "AgentFullName" : "John Doe", 
        "Break": "00:15:31", 
        "Launch" : "01:01:23", 
        "Mail" : "00:05:12"
    } ] 
}

我不能改变类的设计。因此,我需要以默认设计的不同方式序列化对象。

有一种方法来合并或序列化对象,如第二个例子?谢谢。

合并对象以获得MVC 4中唯一的json对象

正如@qamar在注释中所说,使用动态类型

public List<dynamic> ParseData(PausesByAgentModel model){
    List<dynamic> result = new List<dynamic>();
    foreach(String key in model.Keys){
        result.Add(new { pauses = key,value = model[key] });
    }
    return result;
}