余LI  

废话不多说 上代码 :

 也是建立与    Newtonsoft.Json 的基础上,增加对datatime类型的处理,比较方便直观

 

用法:

json.Encode  

json.Decode

 

 

代码见下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Collections;
  5 
  6 using Newtonsoft.Json;
  7 using Newtonsoft.Json.Linq;
  8 using Newtonsoft.Json.Converters;
  9 /// <summary>
 10 ///JSON 的摘要说明
 11 /// </summary>
 12 public class JSON
 13 {
 14 public static string DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
 15 public static string DateTimeFormat2 = "yyyy'-'MM'-'dd";
 16 public static string Encode(object o)
 17 {
 18 if (o == null || o.ToString() == "null") return null;
 19 
 20 if (o != null && (o.GetType() == typeof(String) || o.GetType() == typeof(string)))
 21 {
 22 return o.ToString();
 23 }
 24 IsoDateTimeConverter dt = new IsoDateTimeConverter();
 25 dt.DateTimeFormat = DateTimeFormat;
 26 return JsonConvert.SerializeObject(o, dt);
 27 }
 28 public static JArray ConvertJArray(ArrayList list)
 29 {
 30 string json = Encode(list);
 31 return JArray.Parse(json);
 32 }
 33 public static JObject ConvertJObject(Hashtable ht)
 34 {
 35 string json = Encode(ht);
 36 return JObject.Parse(json);
 37 }
 38 public static string EncodeShortDate(object o)
 39 {
 40 if (o == null || o.ToString() == "null") return null;
 41 
 42 if (o != null && (o.GetType() == typeof(String) || o.GetType() == typeof(string)))
 43 {
 44 return o.ToString();
 45 }
 46 IsoDateTimeConverter dt = new IsoDateTimeConverter();
 47 dt.DateTimeFormat = DateTimeFormat2;
 48 return JsonConvert.SerializeObject(o, dt);
 49 }
 50 public static object Decode(string json)
 51 {
 52 if (String.IsNullOrEmpty(json)) return "";
 53 object o = JsonConvert.DeserializeObject(json);
 54 if (o.GetType() == typeof(String) || o.GetType() == typeof(string))
 55 {
 56 o = JsonConvert.DeserializeObject(o.ToString());
 57 }
 58 object v = toObject(o);
 59 return v;
 60 }
 61 public static object Decode(string json, Type type)
 62 {
 63 return JsonConvert.DeserializeObject(json, type);
 64 }
 65 private static object toObject(object o)
 66 {
 67 if (o == null) return null;
 68 
 69 if (o.GetType() == typeof(string))
 70 {
 71 //判断是否符合2010-09-02T10:00:00的格式
 72 string s = o.ToString();
 73 if (s.Length == 19 && s[10] == 'T' && s[4] == '-' && s[13] == ':')
 74 {
 75 o = System.Convert.ToDateTime(o);
 76 }
 77 }
 78 else if (o is JObject)
 79 {
 80 JObject jo = o as JObject;
 81 
 82 Hashtable h = new Hashtable();
 83 
 84 foreach (KeyValuePair<string, JToken> entry in jo)
 85 {
 86 h[entry.Key] = toObject(entry.Value);
 87 }
 88 
 89 o = h;
 90 }
 91 else if (o is IList)
 92 {
 93 
 94 ArrayList list = new ArrayList();
 95 list.AddRange((o as IList));
 96 int i = 0, l = list.Count;
 97 for (; i < l; i++)
 98 {
 99 list[i] = toObject(list[i]);
100 }
101 o = list;
102 
103 }
104 else if (typeof(JValue) == o.GetType())
105 {
106 JValue v = (JValue)o;
107 o = toObject(v.Value);
108 }
109 else
110 {
111 }
112 return o;
113 }
114 }

 

posted on 2020-04-10 17:17  余LI  阅读(165)  评论(0编辑  收藏  举报