2011-06-22 27 views
0

我正在實現自定義toJson()方法。如何在實現集合時避免最後一個逗號ToString

我的一個班級成員是一本字典。

我所做的:

 sb.Append("\"DateSource\" : {"); 
     foreach (var row in DateSource) 
     { 
      sb.Append("["); 
      sb.Append(string.Format("\"RowKey\" : {0}", row.Key)); 
      sb.Append(string.Format("\"RowData\" : {0}", row.Value)); 
      sb.Append("]"); 
     } 
     sb.Append("}"); 

如何避免在轉換的最後一個逗號?

回答

6

您可以使用:

sb.Append("["); 
sb.Append(string.Join(
    ", ", 
    DateSource.Select(r => string.Format("\"RowKey\" : {0}, \"RowData\" : {1}", r.Key, r.Value)))); 
sb.Append("]"); 
0

我想我會只使用與string.replace() 更換每

, ] --> ] 
, } --> } 
4

我用下面的擴展:

public static String ToSeparatedString<T>(this IEnumerable<T> source, String separator) 
    { 
     return String.Join(separator, source.Select(e => e.ToString()).ToArray()); 
    } 

在需要格式化的情況下:

0123用法
public static String ToSeparatedString<T>(this IEnumerable<T> source, String separator, String format) 
    { 
     return String.Join(separator, source.Select(e => String.Format(format, e)).ToArray()); 
    } 

var myList = new List<String> {"a", "b", "c"}; 
    String result = myList.ToSeparatedString(",", "[{0}]"); 
    // result is "[a],[b],[c]" here 
1
sb.Append("\"DateSource\" : {"); 
    string separator = string.Empty; 
    foreach (var row in DateSource) 
    { 
     sb.Append(separator); 
     sb.Append("["); 
     sb.Append(string.Format("\"RowKey\" : {0},", row.Key)); 
     sb.Append(string.Format("\"RowData\" : {0}", row.Value)); 
     sb.Append("]"); 
     separator = ","; 
    } 
    sb.Append("}"); 

考慮到,如果row.Key和/或row.Value表示字符串,則需要應用的格式像這樣

 sb.Append(string.Format("\"RowKey\" : \"{0}\"", row.Key)); 
     sb.Append(string.Format("\"RowData\" : \"{0}\"", row.Value)); 

請注意這\"{0}\"

+0

+1創造力 –

相關問題