这是我的对象,我得到了这个对象的列表:
space
我想将其转换为格式:
public class MeetingTypeModel
{
public string MeetingTypeId { get; set; }
public string MeetingTypeName { get; set; }
}
List<MeetingTypeModel> MeetingTypeList
答案 0 :(得分:4)
你的方式不应该创建一个json 字典
var temp = MeetingTypeList.Select(x => $"\"{x.MeetingTypeId}\" : \"{x.MeetingTypeName}\"");
var json = $"{{ {string.Join(", ", temp)} }}";
他们应该创建一个json 词典
var dict = MeetingTypeList.ToDictionary(x => x.MeetingTypeId, x => x.MeetingTypeName);
string json = JsonConvert.SerializeObject(dict, Formatting.Indented);
来自 Brett Caswells 评论的更新
对此的一些考虑。
- 我们无法保证与MeetingTypeId MeetingTypeName配对的区别(尽管不太可能)。
- 是否将“(”前缀和“)”附加到此序列化的结果中。
如果您需要额外的括号
json = $"({json})";
答案 1 :(得分:1)
只需添加对 Newtonoft.Json 的引用,然后添加using Newtonsoft.Json;
var MeetingTypeList = new List<MeetingTypeModel>();
// add data to list
string json = JsonConvert.SerializeObject(MeetingTypeList);
答案 2 :(得分:0)
如果您想避免使用外部库,可以按项目逐项执行:
StringBuilder SB = new StringBuilder();
SB.Append("({");
for(int i=0; i<MeetingTypeList.Count; i++) {
MeetingTypeModel mtm = MeetingTypeList[i];
SB.AppendFormat("\"{0}\":"\"{1}\", mtm.MeetingTypeId, mtm.MeetingTypeName);
if {i<MeetingTypeList.Count -1) {
SB.Append(",");
}
}
SB.Append("})");
答案 3 :(得分:0)
您可以遍历列表并使用StringBuilder,您可以生成预期的输出
public string GetString(List<MeetingTypeModel> MeetingTypeList)
{
StringBuilder sb = new StringBuilder();
sb.Append("({");
int i = 1;
foreach(MeetingTypeModel item in MeetingTypeList){
sb.AppendFormat("\"{0}\" : \"{1}\"" , item.MeetingTypeId, item.MeetingTypeName);
//To not append last comma
if(i != MeetingTypeList.Count)
sb.Append(",");
i++;
}
sb.Append("})");
return sb.ToString();
}
POC:DotNetFiddler