我需要获取如下所示的 JSON 字符串:
{"1":[{"value":"1", "text":"Basketball"}, {"value":"2", "text":"Tennis"}, {"value":"3", "text":"Football"}],"3":[{"value":"4", "text":"futbol"}]}
负责构建它的 C# 代码如下所示:
var sportsEntries = new Dictionary<byte, List<KeyValuePair<int, string>>>();
foreach (var department in Departments)
{
var deptOptions = SportList
.Where(x => x.DeptId == department.DeptId)
.ToDictionary(x => x.SportId, x => x.SportNameName).ToList();
sportsEntries .Add(department.DeptId, deptOptions);
}
var json = JsonConvert.SerializeObject(sportsEntries);
不幸的是,这种方法生成了错误的 JSON。 JSON 看起来像这样:
{"1":[{"Key":1,"Value":"Basketball"},{"Key":2,"Value":"Tennis"},{"Key":3,"Value":"Football"}],"3":[{"Key":4, "Value":"Futbol"}]}
我觉得我很亲近。然而,我不确定如何更新我的 C# 代码以使生成的 JSON 看起来像我需要的格式。如何更新 C# 以输出正确的 JSON?
谢谢!
请您参考如下方法:
你可以使用这样的东西:
var sportsEntries = new Dictionary<byte, List<object>();
foreach (var department in Departments)
{
var deptOptions = SportList
.Where(x => x.DeptId == department.DeptId)
.Select(x => new { value = x.SportId, text = x.SportNameName}).ToList();
sportsEntries .Add(department.DeptId, deptOptions);
}
var json = JsonConvert.SerializeObject(sportsEntries);
此解决方案取代了最初的 KeyValuePair<int, string>
与 object
并创建具有所需属性的匿名对象列表。