事情是酱事儿的,某接口返回结果是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
{
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
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
{
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);
}
}
http://m.bbyears.com/wangyezhizuo/47306.html
推荐访问:json数据解析出错 json格式数据