我的 View 中有一个图表,如下所示:
var hourlyGraph = Morris.Bar({
element: 'graph_bar',
data: [
@foreach (var item in ViewBag.HourlyGraph)
{
@:{device: '@item.Hour.ToString("D2"):00', geekbench:@item.Sales },
}
],
xkey: 'device',
ykeys: ['geekbench'],
labels: ['Sold'],
barRatio: 0.4,
barColors: ['#0A4D70', '#34495E', '#ACADAC', '#3498DB'],
xLabelAngle: 35,
hideHover: 'auto',
resize: true
});
这是莫里斯图。请注意此处的数据设置方式:
[
@foreach (var item in ViewBag.HourlyGraph)
{
@:{device: '@item.Hour.ToString("D2"):00', geekbench:@item.Sales },
}
]
现在我需要用新数据填充图表。在我的 Action 中,我创建了一个包含 2 个属性的列表:
public int Hour {get;set;}
public int Sales {get;set;}
它们被存储在一个列表中,类型为:
var HourlyGraph = new List<HourlyGraph>();
现在我想将此列表转换为 JSON 格式,如下所示:
[
{device: '0', geekbench:5 },
{device: '1', geekbench:13 },
{device: '2', geekbench:25 },
{device: '3', geekbench:14 },
{device: '4', geekbench:16 },
]
设备的值(value) = 小时,而 geekbench = 销售额 ...
我如何在 C# 中执行此操作?
最佳答案
使用 Json.Net 和 Linq 很容易:
string myJson =
JsonConvert.SerializeObject(mylist.Select(item=>
new {device=item.Hour, geekbench=item.Sales}));
您使用所需的字段和名称转换一个匿名类型,然后让 Newtonsoft.Json 完成其余的工作。
关于c# - 将 C# 列表转换为 JSON 特定格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788237/