json中换行符的处理方法示例介绍

  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);

  }

  }