分享

基于EasyUI的软件框架打造-数据(JSON)封装

 贾朋亮博客 2014-04-01

所有产品都离不开数据交互,封装为了让客户端和服务器端更好的识别数据,提高开发效率,减少出错:

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);
            }
        }
    }
复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多