一聚教程网:一个值得你收藏的教程网站

热门教程

JSON数据回车换行符的处理

时间:2022-06-29 02:55:24 编辑:袖梨 来源:一聚教程网

事情是酱事儿的,某接口返回结果是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;

也就是把返回结果里的换行转换为“rn”给到JS里,然后JS接收到的就是rn了。

测试一下json类的处理,也没有发现。想不到最终的处理确实如此简单:
后台代码把换行符rn替换为rn,前台代码js收到的字符就是rn

 代码如下 复制代码

public static string ConvertFromListTojson(IList 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, col);  
               value = value.Replace("rn", "rn");            
               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, 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);  
       }  
   
   }

热门栏目