请高手指教C#是否有现成的将dataTable转换为json格式的函数,请知道者尽快答复,很急谢谢!

解决方案 »

  1.   

    这个自己就可以实现了
    只要知道json的格式 然后循环datatable
    key值对应json的key value对应value
    就行了
      

  2.   


    首先要使用精确、直截了当地代表业务实体的对象,例如User[]或者List<User>这类强类型的集合,然后使用json序列化/反序列化技术。
      

  3.   

    如果你经常做稍微复杂、层级高一些的开发,你不会使用DataTable的。那么这时候去写序列化json的代码,不是什么半小时,而是3秒钟就足够了。
      

  4.   

            /// <summary>
            /// 将datatable转换为json  
            /// </summary>
            /// <param name="dtb">Dt</param>
            /// <returns>JSON字符串</returns>
            private string Dtb2Json(DataTable dtb)
            {
                JavaScriptSerializer jss = new JavaScriptSerializer();
                System.Collections.ArrayList dic = new System.Collections.ArrayList();
                foreach (DataRow dr in dtb.Rows)
                {
                    System.Collections.Generic.Dictionary<string, object> drow = new System.Collections.Generic.Dictionary<string, object>();
                    foreach (DataColumn dc in dtb.Columns)
                    {
                        drow.Add(dc.ColumnName, dr[dc.ColumnName]);
                    }
                    dic.Add(drow);            }
                //序列化  
                return jss.Serialize(dic);
            }
    楼主给分吧。
      

  5.   

    public class JsonHelper
        {
            /// <summary>
            /// 生成Json格式
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static string GetJson<T>(T obj)
            {
                DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
                using (MemoryStream stream = new MemoryStream())
                {
                    json.WriteObject(stream, obj);
                    string szJson = Encoding.UTF8.GetString(stream.ToArray());
                    return szJson;
                }
            }
            /// <summary>
            /// 获取Json的Model
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="szJson"></param>
            /// <returns></returns>
            public static T ParseFromJson<T>(string szJson)
            {
                T obj = Activator.CreateInstance<T>();
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                    return (T)serializer.ReadObject(ms);
                }
            }
      

  6.   

    GetJson 将传入 类对象转化成字符串
    ParseFromJson 将 josn字符串转化 成 对象
      

  7.   

    /// <summary>
            /// 将DataTable转换为Json格式
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public string CreateJsonParameters(DataTable dt)
            {
                StringBuilder JsonString = new StringBuilder();
                if (dt != null && dt.Rows.Count > 0)
                {
                    JsonString.Append("{ ");
                    JsonString.Append("\"Head\":[ ");                for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        JsonString.Append("{ ");
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            if (j < dt.Columns.Count - 1)
                            {
                                JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() +
                                      "\":" + "\"" +
                                      dt.Rows[i][j].ToString() + "\",");
                            }
                            else if (j == dt.Columns.Count - 1)
                            {
                                JsonString.Append("\"" +
                                   dt.Columns[j].ColumnName.ToString() + "\":" +
                                   "\"" + dt.Rows[i][j].ToString() + "\"");
                            }
                        }
                        if (i == dt.Rows.Count - 1)
                        {
                            JsonString.Append("} ");
                        }
                        else
                        {
                            JsonString.Append("}, ");
                        }
                    }                JsonString.Append("]}");
                    return JsonString.ToString();
                }
                else
                {
                    return null;
                }
            }
    这个还行吧!试一试!