JSON.parse的问题!含有换行符和空格是不能转换的
发布于 5 年前 作者 swei 7891 次浏览 来自 问答

前些天我测试了返回数据是json格式字符串的字符,使用这个却不能转换,弄了很久并想过很多问题都解决不了,后来考虑到正则我才发现一个问题。

平常我是 console.dir(data)输出内容为连续的字符串,console.log(data)输出的是具有换行和空格的字符串。他们之间的数据看到只有换行符和空格符的区别

最后我是采用了正则去除换行和空格的转义符才可以实现变成json对象数据使用,也就是说JSON.parse转义的是不能含有换行符或空格的字符串

这个分享大家看看,不知道大家有没有遇到过。

3 回复

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

    }

不仅仅空格和换行要转,这几个都需要转, 转全角字符的那几个是因为小程序页面间传参数需要转。

文中有说

是的,的确这个问题。怎么解决?

回到顶部