1 、从后台获取json数据后 的处理方式有:1 $.post('url',{},function(){},'json') 最后加一个"json"参数,如果不加默认是string类型 加上json 之后就不用转换了。
2如果不加json返回值类型参数,就要手动转换,转换方法有 JSON.parse(data) ,效果和第一种一样,但是如果json格式不对会出错
3 如果使用 eval('(' + data + ')') 方式转换json 不会对json格式进行验证,即使出错 也有可能转换成功
2、 把DataTable转换成json 的工具类 :(注意 如果其中有\t 是要替换掉的 ,不然转换后json 格式不正确,解析会出错)
public string DataTableJson(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"");
jsonBuilder.Append(dt.TableName.ToString());
jsonBuilder.Append("\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\t","")); //有人手贱多打好多\t(可能是打的空格) 存到数据库就是\t 导致拼接成json后 也有好多\t 看起来和空格一样,但是前台转成json时候会出错,拼接时候替换掉\t
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}