使用两个字符串参数将对象转换为逗号分隔的字符串

时间:2018-05-29 05:07:34

标签: c#

这是我的对象,我得到了这个对象的列表:

space

我想将其转换为格式:

public class MeetingTypeModel
{
    public string MeetingTypeId { get; set; }
    public string MeetingTypeName { get; set; }
}

List<MeetingTypeModel> MeetingTypeList

4 个答案:

答案 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