事情是酱事儿的,某接口返回结果是JSON数据,我这边处理一番返回给页面JS。但是吧,JS在处理JSON的时候报了这个错误:Unexpected token ILLEGAL,导致中止。
网上找了一番,自己试了一番,于是总结一番。
返回的结果是酱事儿的:
代码如下 | 复制代码 |
{"status":"1","info":{"date":"2013-12-01","content":"1、测试内容1 2、测试内容2 3、测试内容3 4、测试内容4 5、测试内容5"}} |
直接整的话会报上面说的错误。但是直接把换行去掉又不合适,所以就这么整了一下:
代码如下 | 复制代码 |
$response =~ s/r/\r/g; $response =~ s/n/\n/g; |
也就是把返回结果里的换行转换为“\r\n”给到JS里,然后JS接收到的就是rn了。
测试一下json类的处理,也没有发现。想不到最终的处理确实如此简单:
后台代码把换行符rn替换为\r\n,前台代码js收到的字符就是rn
代码如下 | 复制代码 |
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("rn", "\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); } } |
时间: 2024-10-27 16:21:15