• JSON格式互转集合 (2)


     public class JSON 

    {   

    public static string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss";        

    public static string Encode(object o)        

    {

         if (o == null || o.ToString() == "null") return null;

         if (o != null && (o.GetType() == typeof(String) || o.GetType() == typeof(string)))

                {                

          return o.ToString();            

        }             

            IsoDateTimeConverter dt = new IsoDateTimeConverter();            

           dt.DateTimeFormat = DateTimeFormat;            

           return JsonConvert.SerializeObject(o, dt);      

       }

     public static object Decode(string json)
            {
                if (String.IsNullOrEmpty(json)) return "";
                object o = JsonConvert.DeserializeObject(json);
                if (o.GetType() == typeof(String) || o.GetType() == typeof(string))
                {
                    o = JsonConvert.DeserializeObject(o.ToString());
                }
                object v = toObject(o);
                return v;
            }

     public static object Decode(string json, Type type)        

    {            

       return JsonConvert.DeserializeObject(json, type);     

      }       

      private static object toObject(object o)        

    {            

      if (o == null) return null;

         if (o.GetType() == typeof(string))            

         {               

           //判断是否符合2010-09-02T10:00:00的格式                

          string s = o.ToString();                

           if (s.Length == 19 && s[10] == 'T' && s[4] == '-' && s[13] == ':')              

              {                    

               o = System.Convert.ToDateTime(o);     

                    }           

            }   else if (o is JObject)         

                  {                

                JObject jo = o as JObject;  

                    Hashtable h = new Hashtable();

                          foreach (KeyValuePair<string, JToken> entry in jo)           

                      {                    

                     h[entry.Key] = toObject(entry.Value);     

                          }  

                    o = h;             

              } else if (o is IList)   

                        {

                              ArrayList list = new ArrayList();  

                             list.AddRange((o as IList));

                            int i = 0, l = list.Count;

                            for (; i < l; i++)                

                   {                   

                      list[i] = toObject(list[i]);

                              }               

                    o = list;

                          } else if (typeof(JValue) == o.GetType())

                       { 

                         JValue v = (JValue)o;

                         o = toObject(v.Value);

                      }else { 

                                }           

                         return o;

            }

     public static ArrayList DataTable2ArrayList(DataTable data)        

    {            

    ArrayList array = new ArrayList();            

    for (int i = 0; i < data.Rows.Count; i++)            

    {                

    DataRow row = data.Rows[i];

     Hashtable record = new Hashtable();                

    for (int j = 0; j < data.Columns.Count; j++)                

    {                    

    object cellValue = row[j];                    

    if (cellValue.GetType() == typeof(DBNull))                   

      {                        

    cellValue = null;                    

    }                    

    record[data.Columns[j].ColumnName] = cellValue;                

    }                

    array.Add(record);            

    }            

    return array;        

    }

     /// <summary>        

    /// 将一个DataTable 转为一个JSON        

    /// </summary>        

    /// <param name="dt"></param>        

    /// <returns></returns>        

    public static string DataTable2Json(DataTable dt)        

    {            

    if (dt == null)            

    {               

      return "";           

      }            

    ArrayList dataAll = DataTable2ArrayList(dt);

     ArrayList data = new ArrayList();            

    for (int i = 0, l = dataAll.Count; i < l; i++)            

    {                

    Hashtable record = (Hashtable)dataAll[i];                

    if (record == null) continue;                

    data.Add("'" + record + "'");            

    }

     Hashtable result = new Hashtable();            

    result["data"] = data;           

     result["total"] = dataAll.Count;

     return JSON.Encode(dt);

            }

     /// <summary>        

    /// 通过一个datatable 返回一个json字符串

     /// </summary>        

    /// <param name="dt">按条件的datatable(分页内的列表)</param>        

    /// <param name="AllCount">datatable的总条数(分页时的总记录)</param>        

    /// <returns></returns>        

    public static string DataTable2Json(DataTable dt, int AllCount)        

    {            

    if (dt == null)            

    {                

    return "";            

    }            

    ArrayList dataAll = DataTable2ArrayList(dt);

     //实现一个内存分页(实际应该使用SQL分页)            

    ArrayList data = new ArrayList();            

    for (int i = 0, l = dataAll.Count; i < l; i++)            

    {                

    Hashtable record = (Hashtable)dataAll[i];                

    if (record == null) continue;                

    data.Add(record);            

    }

     Hashtable result = new Hashtable();            

    result["data"] = data;            

    result["total"] = AllCount;

      return JSON.Encode(result);

            }

            /// <summary>        

    /// 通过一个datatable 返回一个json字符串

            /// </summary>       

      /// <param name="dt">按条件的datatable(分页内的列表)</param>       

      /// <param name="AllCount">datatable的总条数(分页时的总记录)</param>      

       /// <returns></returns>        

    public static string DataTable2Json(DataTable dt, int AllCount, Hashtable hashtable)        

    {            

    if (dt == null)            

    {                

    return "";           

      }           

      ArrayList dataAll = DataTable2ArrayList(dt);

    //实现一个内存分页(实际应该使用SQL分页)            

    ArrayList data = new ArrayList();            

    for (int i = 0, l = dataAll.Count; i < l; i++)            

    {               

      Hashtable record = (Hashtable)dataAll[i];                

    if (record == null) continue;                

    data.Add(record);          

       }

      Hashtable result = new Hashtable();            

    result = hashtable;            

    result["data"] = data;            

    result["total"] = AllCount;

     return JSON.Encode(result);

            }

     /// <summary>
            /// 分页
            /// </summary>
            /// <param name="data">表dt</param>
            /// <param name="pageIndex">当前页索引</param>
            /// <param name="pageSize">每页的数目</param>
            /// <param name="pageCount">总数目</param>
            /// <returns></returns>
            public static DataTable dt2newdt(DataTable data, int pageIndex, int pageSize, int pageCount)
            {
                DataView dv = data.DefaultView;
                DataTable dt = dv.Table.Clone();
                for (int i = pageIndex * pageSize; i < (pageIndex + 1) * pageSize; i++)
                {
                    if (i == pageCount)
                    {
                        break;
                    }
                    dt.ImportRow(dv[i].Row);
                }
                return dt;
            }

    }

  • 相关阅读:
    Java基础之泛型——使用通配符类型参数(TryWildCard)
    Java基础之泛型——使用二叉树进行排序(TryBinaryTree)
    Java基础之泛型——使用泛型链表类型(TryGenericLinkedList)
    Java基础之序列化对象——反序列化对象(DeserializeObjects)
    Java基础之序列化对象——将对象写入到文件中(SerializeObjects)
    拷贝excel里的内容转为JSON的js代码
    asp.net 正则获取url参数
    vs2013给类添加默认注释
    日货EmEditor的使用小技巧
    express不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/nxxshxf/p/5227503.html
Copyright © 2020-2023  润新知