前些天我测试了返回数据是json格式字符串的字符,使用这个却不能转换,弄了很久并想过很多问题都解决不了,后来考虑到正则我才发现一个问题。
平常我是 console.dir(data)输出内容为连续的字符串,console.log(data)输出的是具有换行和空格的字符串。他们之间的数据看到只有换行符和空格符的区别
最后我是采用了正则去除换行和空格的转义符才可以实现变成json对象数据使用,也就是说JSON.parse转义的是不能含有换行符或空格的字符串
这个分享大家看看,不知道大家有没有遇到过。
protected string toJSonString(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
switch ©
{
case ‘\"’:
sb.Append("\\\"");
break;
case ‘\\’:
sb.Append("\\\\");
break;
case ‘/’:
sb.Append("\\/");
break;
case ‘\b’:
sb.Append("\\b");
break;
case ‘\f’:
sb.Append("\\f");
break;
case ‘\n’:
sb.Append("\\n");
break;
case ‘\r’:
sb.Append("\\r");
break;
case ‘\t’:
sb.Append("\\t");
break;
case ‘=’:
sb.Append(“=”);
break;
case ‘&’:
sb.Append("&");
break;
case ‘?’:
sb.Append("?");
break;
case ‘%’:
sb.Append("%");
break;
default:
if ((c >= 0 && c <= 31) || c == 127)//在ASCⅡ码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符
{
}
else
{
sb.Append©;
}
break;
}
}
//return Server.UrlEncode(str);
//return Server.UrlPathEncode(Server.UrlPathEncode(str));
//return HttpUtility.UrlPathEncode(sb.ToString());
return sb.ToString();
}
不仅仅空格和换行要转,这几个都需要转, 转全角字符的那几个是因为小程序页面间传参数需要转。