JSON数据回车换行符的处理

事情是酱事儿的,某接口返回结果是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-08-01 01:58:56

JSON数据回车换行符的处理的相关文章

求教RoR处理回车换行符问题

问题描述 我使用RoR的textarea标签作为输入框,录入文本数据(包含若干回车换行)并存储到mysql数据库中.结果在显示最终显示出来的时候,却发现文字变成了一堆,没有任何回车换行符.不知道为什么,望赐教!另外,还想请教如果是使用ror开发,怎么在非IDE环境下面进行调试和观察? 解决方案 直接:<%= simple_format @content %>哇哈哈

C++读取到回车换行符问题处理_C 语言

今天在编写99乘法在线小游戏(看过我的 linux下c实现的数据库备份(第四版)应该知道我在那里提过^.^)的时候遇到读取文件的信息遇到回车换行符的烦恼. 比如我文件里面有如下信息: name=qizexi sex=man 我希望读取到name=qizexi这些有效字符而已,不希望\r\n也加入其中,因为那样会影响我的判断. 解决的方式是在遇到\r获取\n的时候,替换为\0. #include<string.h> #include<stdio.h> int main(int arg

PHP 清除HTML代码、空格、回车换行符的函数

在写采集程序时,往往需要对采集回来的内容进行处理,比如删除HTML代码.去掉多余的空格.删除回车换行符等等.下面就写一个函数来处理. function DeleteHtml($str) { $str = trim($str); $str = strip_tags($str,""); $str = ereg_replace("\t","",$str); $str = ereg_replace("\r\n",""

如何在VS.NET/C# Builder开发的网页中也能实现DOS下录入数据回车换行的功能

数据|网页 如何在VS.NET/C# Builder开发的网页中也能实现DOS下录入数据回车换行的功能北京煤炭科学研究总院经济与信息研究所 丁报圣 在DOS年代,录入数据时我们习惯了在录入完一行数据后敲一个回车转入下一行的数据录入.昔日DOS的辉煌已经成为过去,如今更加友好易用的GUI图形操作界面Windows已经进入了我们的日常生活. 1996年Windows95的出现是软件史上的一次伟大革命.Windows 是美国微软公司开发的一种图形方式的操作系统,它的出现克服了 DOS 中难记的一些命令

javascript获取到textarea文本框中的回车换行符

作者:王先荣 结论     javascript获取到textarea文本框中的字符串中,如果包含有回车换行符,在字符串中表现为"\n",而不是我们通常所见的"\r\n". 发现问题     今天在做小网站的时候,需要将用户输入的英文分号.中英文逗号及回车都替换成中文分号,在编javascript函数的过程中,总是无法正确的替换回车. 例如:用户在textarea中输入: 测试字符串1 测试字符串2 我们将textarea中的输入字符串保存到变量content中,下

PHP去除回车换行符与敏感html标签

在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r.因此unix系列用 /n,windows系列用 /r/n,mac用 /r,这样就用你写的程序在不同的平台上运行有着不少的麻烦.下面是PHP去除换行符的一些常见方法. 第一种写法:  代码如下 复制代码 $content=str_replace("n","",$content);   echo $content; 第二种写法:  代码如下 复制代码 str

java中替换去除字符串中的空格/回车/换行符/制表符

用String对象的方法replaceAll就可以了! replaceAll(String regex, String replacement)           使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串. 示例代码:  代码如下 复制代码 public class T3 { public static void main(String args[]) {  String str="aa bb cc";  System.out.prin

Word 2010中如何隐藏回车换行符?找不到显示段落标记?

1:Ctrl+* 2:菜单--选项--显示--始终在屏幕上显示这些格式标记--段落标记(把这个勾去掉) 只有"文件.开始.插入.页面布局.引用.邮件.审阅.视图.加载项"等菜单可选,"选项"在哪? 1:Ctrl+* 2:文件--选项--显示--始终在屏幕上显示这些格式标记--段落标记(把这个勾去掉) 这个这个--虽然我犯了个不可饶恕的错误,可是哥哥您的可爱也绝对是不能轻饶地-- 两步都要做. 第一步只是将某些特殊字符不显示.但是有些顽固的字符即便是按下了Ctrl+*

word如何隐藏回车换行符?找不到显示段落标

1:Ctrl+* 2:菜单--选项--显示--始终在屏幕上显示这些格式标记--段落标记(把这个勾去掉) 只有"文件.开始.插入.页面布局.引用.邮件.审阅.视图.加载项"等菜单可选,"选项"在哪? 1:Ctrl+* 2:文件--选项--显示--始终在屏幕上显示这些格式标记--段落标记(把这个勾去掉) 这个这个--虽然我犯了个不可饶恕的错误,可是哥哥您的可爱也绝对是不能轻饶地-- 两步都要做. 第一步只是将某些特殊字符不显示.但是有些顽固的字符即便是按下了Ctrl+*