Skip to main content
 首页 » 编程设计

c#之在 C# 中将选项列表转换为 JavaScript 数组

2024年06月03日31sky-heaven

我需要获取如下所示的 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并创建具有所需属性的匿名对象列表。