json作为ajax常用的一种数据类型,经常使用。但如果字段中出现换行符如何处理? 
去掉显然不合适。有些字段本来就有换行符,如何能去掉? 
测试一下json类的处理,也没有发现。想不到最终的处理确实如此简单: 
后台代码把换行符\r\n替换为\\r\\n,前台代码js收到的字符就是\r\n 
复制代码 代码如下:
 
public static string ConvertFromListTojson<T>(IList<T> list, int total, string columnInfos) where T : class 
{ 
string[] cols = columnInfos.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries); 
StringBuilder sb = new StringBuilder(300); 
sb.Append("{\"total\":"); 
sb.Append(total); 
sb.Append(",\"rows\":"); 
sb.Append("["); 
foreach (T t in list) 
{ 
sb.Append("{"); 
foreach (string col in cols) 
{ 
string name = "\"{0}\":\"{1}\","; 
string value = getValue<T>(t, col); 
value = value.Replace("\r\n", "\\r\\n"); 
sb.Append(string.Format(name, col, value)); 
} 
if (cols.Length > 0) 
{ 
int length = sb.Length; 
sb.Remove(length - 1, 1); 
} 
sb.Append("},"); 
} 
if (list.Count > 0) 
{ 
int length2 = sb.Length; 
sb.Remove(length2 - 1, 1); 
} 
sb.Append("]"); 
sb.Append("}"); 
return sb.ToString(); 
} 
private static string getValue<T>(T t, string pname) where T : class 
{ 
Type type = t.GetType(); 
PropertyInfo pinfo = type.GetProperty(pname); 
if (pinfo != null) 
{ 
object v = pinfo.GetValue(t, null); 
return v != null ? v.ToString() : ""; 
} 
else 
{ 
throw new Exception("不存在属性" + pname); 
} 
} 
PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
