如何将MeetingTypeModel对象列表转换为指定键值对JSON格式?
把MeetingTypeList转换为指定键值对JSON格式
嘿,要把你的MeetingTypeList转换成类似{"1": "Bangladesh", "2": "Belgium"}这种键值对JSON格式其实很简单,核心思路就是先把列表转换成字典(Dictionary),再将字典序列化为JSON就行——毕竟你要的JSON结构本质就是一个字符串键值对的字典。
先回顾下你的模型定义:
public class MeetingTypeModel { public string MeetingTypeId { get; set; } public string MeetingTypeName { get; set; } } List<MeetingTypeModel> MeetingTypeList;
下面是两种常用的实现方式:
方式一:用Newtonsoft.Json(Json.NET)实现
这是.NET生态里非常流行的第三方JSON库,如果你还没安装,可以通过NuGet包管理器安装Newtonsoft.Json。
代码示例:
// 第一步:将列表转换为Dictionary,键是MeetingTypeId,值是MeetingTypeName var meetingTypeDict = MeetingTypeList.ToDictionary(m => m.MeetingTypeId, m => m.MeetingTypeName); // 第二步:将字典序列化为JSON字符串 string jsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(meetingTypeDict);
方式二:用System.Text.Json实现
如果你用的是.NET Core 3.0+或者.NET 5+,可以直接用框架自带的System.Text.Json,不需要额外安装包。
代码示例:
// 同样先转成字典 var meetingTypeDict = MeetingTypeList.ToDictionary(m => m.MeetingTypeId, m => m.MeetingTypeName); // 序列化JSON string jsonResult = System.Text.Json.JsonSerializer.Serialize(meetingTypeDict);
注意:处理重复的MeetingTypeId
如果你的MeetingTypeList里存在重复的MeetingTypeId,直接用ToDictionary会抛出异常。这时候可以先分组,取每组的第一个元素来构建字典:
var meetingTypeDict = MeetingTypeList .GroupBy(m => m.MeetingTypeId) .ToDictionary(g => g.Key, g => g.First().MeetingTypeName);
当然,你也可以根据业务需求调整重复键的处理逻辑,比如合并值、取最后一个元素等等。
内容的提问来源于stack exchange,提问作者Raj SOni
相关产品推荐
相关产品推荐

