所有产品都离不开数据交互,封装为了让客户端和服务器端更好的识别数据,提高开发效率,减少出错: javascript 对json数据有先天处理优势,关键要做的是服务器要生成能让javascript识别的json数据格式
public class Json { private string[] name = new string[]{"javascript","json"}; private object[] value = new object[]{"",""}; JsonObject jo = new JsonObject(); public Json(string js,string json) { if (js != "") value[0] = js; if (json != "") value[1] = json; jo = new JsonObject(name, value); } public string JavascriptPart() { return JsonConvert.ExportToString(jo["javascript"]); } public string JsonPart() { return JsonConvert.ExportToString(jo["json"]); } public string JsonAll() { return JsonConvert.ExportToString(jo); } public string MsgJson(string title,string msg) { value[0] = UIHelper.Message(title, msg); return JsonConvert.ExportToString(jo); } /// <summary> /// Json数据转为Hashtable /// </summary> /// <param name="json">合法josn数据</param> /// <returns>Hashtable</returns> public static Hashtable FromJson(string json) { JsonObject jo = (JsonObject)JsonConvert.Import(json); Hashtable ht = new Hashtable(); ht = JsonObjectToHashtable(jo, ht); return ht; } /// <summary> /// Json数据转为Hashtable /// </summary> /// <param name="jo">Json对象</param> /// <param name="ht">父级Hashtable</param> /// <returns></returns> private static Hashtable JsonObjectToHashtable(JsonObject jo, Hashtable ht) { JsonArray names = jo.GetNamesArray(); for (int i = 0; i < names.Count; i++) { object o = jo[names[i].ToString()]; if (o.GetType().Name == "JsonArray") { Hashtable _ht = new Hashtable(); JsonArray ja = (JsonArray)o; for (int j = 0; j < ja.Count; j++) { _ht = JsonObjectToHashtable(ja[j] as JsonObject, _ht); } ht.Add(names[i].ToString(), _ht); } else ht.Add(names[i].ToString(), o); } return ht; } /// <summary> /// 对象生成json /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <returns></returns> public static string Serialize<T>(T data) { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType()); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, data); return Encoding.UTF8.GetString(ms.ToArray()); } } /// <summary> /// Json反序列化为对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="json"></param> /// <returns></returns> public static T Deserialize<T>(string json) { T obj = Activator.CreateInstance<T>(); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); return (T)serializer.ReadObject(ms); } } } |
|