c# - ASP.NET MVC。创建模型以转换为 JSON 对象(具有动态名称属性)

标签 c# json asp.net-mvc

我需要像这样生成 Json 输出:

{
    "01:30":{
        "FREE":true,
        "PRICE":3500
     },
    "03:00":{
        "FREE":true,
        "PRICE":2500
    },
    "13:30":{
        "FREE":true,
        "PRICE":2500
    }
}

我的问题是时间字符串——它是从一个条目到另一个条目的动态。我不知道如何构建将被序列化为正确的 json 结果的 c# 类(模型)。 我的模型现在看起来像这样:

public class ScheduleViewModel
{
    public ScheduleInnerViewModel TIME { get; set; }
}

public class ScheduleInnerViewModel
{
    public bool FREE { get; set; }
    public int PRICE { get; set; }
}

输出结果是(错误的):

[
    {"TIME":{
        "FREE":true,
        "PRICE":3500
     }},
    {"TIME":{
        "FREE":true,
        "PRICE":2500
    }},
    {"TIME":{
        "FREE":true,
        "PRICE":2500
    }}
]

我使用标准方式从 Controller 生成 json 结果:

List<ScheduleViewModel> model = new List<ScheduleViewModel>();
//fill the model...
return this.Json(model, JsonRequestBehavior.AllowGet);

最佳答案

如果有一个字典,其中的键是一个字符串(您的时间戳)并且数据是您的模型类呢?

喜欢:

Dictionary<string, ScheduleInnerViewModel> dic = new Dictionary<string, ScheduleInnerViewModel>();

dic.Add("01:30", new ScheduleInnerViewModel{ Free = false, Price = 100 });
dic.Add("04:25", new ScheduleInnerViewModel{ Free = false, Price = 200 });
dic.Add("13:00", new ScheduleInnerViewModel{ Free = true, Price = 0 });

var json = JsonConvert.SerializeObject(dic, new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented });

Console.WriteLine(json);

输出:

enter image description here

关于c# - ASP.NET MVC。创建模型以转换为 JSON 对象(具有动态名称属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081915/

相关文章:

c# - 如何在谷歌云平台控制台中启用 'Vector Tile API'?

javascript - 如何从多行选择下拉框中自动填充输入文本?

javascript - $.each显示数据然后暂停3秒

c# - 将 Task.WhenAll 与不断增长的任务列表一起使用

c# - 通过输入流发送音频,就像我在用麦克风说话一样

c# - 语言中立的插件架构

javascript - 通过对象值渗透 JSON 响应

asp.net-mvc - Angular 2 路由问题 - 刷新或重新加载时出现 404 错误

asp.net-mvc - 用于 ASP.NET MVC 的组合框

javascript - MVC 5如何强制浏览器打开PDF文件