是这样的,我在做jquery ajax的时候,读取返回的dataset转换后的json,可是在读的时候,数据库的字段里面有些数据带“[aaa]”这个中括号,跟我下面转换json起了冲突,下面方法是转换json,我改怎么改能不起冲突。 /// <summary>
        /// DataTable转Json
        /// </summary>
        /// <param name="dtb"></param>
        /// <returns></returns>
        private string Dtb2Json(DataTable dtb)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            ArrayList dic = new ArrayList();            foreach (DataRow row in dtb.Rows)
            {
                Dictionary<string, object> drow = new Dictionary<string, object>();
                foreach (DataColumn col in dtb.Columns)
                {
                    drow.Add(col.ColumnName, row[col.ColumnName]);
                }
                dic.Add(drow);
            }            return jss.Serialize(dic);
        }
     
        /// <summary>  
        /// dataTable转换成Json格式  
        /// </summary>  
        /// <param name="dt"></param>  
        /// <returns></returns>  
        public static string DataTable2Json(System.Data.DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{\"Name\":\"" + dt.TableName + "\",\"Rows");
            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("\"", "\\\"")); //对于特殊字符,还应该进行特别的处理。
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }        /// <summary>  
        /// DataSet转换成Json格式  
        /// </summary>  
        /// <param name="ds">DataSet</param>  
        /// <returns></returns>  
        public static string Dataset2Json(System.Data.DataSet ds)
        {
            StringBuilder json = new StringBuilder();
            json.Append("{\"Tables\":");
            json.Append("[");
            foreach (System.Data.DataTable dt in ds.Tables)
            {
                json.Append(DataTable2Json(dt));
                json.Append(",");
            }
            json.Remove(json.Length - 1, 1);
            json.Append("]");
            json.Append("}");
            return json.ToString();
        }

解决方案 »

  1.   

    [aaa]在外面还家层""试试,例如"[aaa]"
      

  2.   

    他的外层已经加了""了,
    LZ你将[]转换成<>试试,到时候在json解析后使用的时候再转换为[]就可以了哈
      

  3.   

    我的意思是在外面还加一层,比如'"[aaa]"'的格式
      

  4.   

    那看你在什么地方有[]这特征啊,
    json.Append("[");比如这里你可以json.Append("'[");
    json.Append("]'");
      

  5.   

    这样解析之后 得到的就是"[aaa]"的结果了吧
    LZ断点看看  通过ajax返回的json数据中""和[]的关系具体是怎么样的呢其实如果你格式都正确的话,内容含[]是不会冲突的。var info = { "name": "tom", "age": "[ageccc]" };
    alert(info.age);上述代码是能正常运行的
      

  6.   


    private static string jsonStr()
            {
                DataTable dt = new DataTable("test");
                dt.Columns.Add(new DataColumn("col1"));
                dt.Columns.Add(new DataColumn("col2"));
                dt.Rows.Add("1", "2[test]ss");
                return DataTable2Json(dt);
            }结果:{"Name":"test","Rows":[{"col1":"1","col2":"2[test]ss"}]}应是正确的,除非你前台解析有问题