分享

JSON系列化和反列化

 实力决定地位 2013-11-01

    /// <summary>
        /// 将json转化成对象
        /// </summary>
        /// <param name="strjson"></param>
        /// <returns></returns>
        public static object DeserializeObject2(string strjson){
            var ser = new JavaScriptSerializer();
            return ser.DeserializeObject(strjson);
              
        }
        /// <summary>
        /// json反系列化
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="jsonText"></param>
        /// <returns></returns>
        public static T JSONToObject<T>(string jsonText)
        {

            System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();

            try
            {

                return jss.Deserialize<T>(jsonText);

            }

            catch (Exception ex)
            {

                throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);

            }

        }


        /// <summary> 
        /// JSON反序列化  
        ///     这个可以将对象反系列化成集合任何asp.net,C#对象
        /// </summary> 
       
           public static T JsonDeserialize<T>(string jsonString)  
          {       DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); 
                   MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));     
                 T obj = (T)ser.ReadObject(ms);
               
             return obj;  
             
         }   
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;
namespace Woo.Utility
{
    /// <summary>
    /// 用于标识可以Json
    /// </summary>
    public interface IJson
    {
    }
    /// <summary>
    /// Json扩展方法
    /// </summary>
    public static class JsonExtensions
    {
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(this IJson obj)
        {
            var ser = new JavaScriptSerializer();
            return ser.Serialize(obj);
        }
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(this IEnumerable<IJson> obj)
        {
            var ser = new JavaScriptSerializer();
            return ser.Serialize(obj);
        }
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(dynamic obj)
        {
            var ser = new JavaScriptSerializer();
            return ser.Serialize(obj);
        }
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(this IEnumerable<Woo.Model.IEntity> obj)
        {
            var lst = obj.Select(a => a.ToJsonObject());
            var ser = new JavaScriptSerializer();
            return ser.Serialize(lst);
        }
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(this Woo.Model.IEntity obj)
        {
            var ser = new JavaScriptSerializer();
            return ser.Serialize(obj.ToJsonObject());
        }
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(this Dictionary<string, object> obj)
        {
            var ser = new JavaScriptSerializer();
          
            return ser.Serialize(obj);
        }
        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJSON(this IEnumerable<Dictionary<string, object>> obj)
        {
            var ser = new JavaScriptSerializer();
            return ser.Serialize(obj);
        }

        /// <summary>
        /// 得到指定的值
        /// </summary>
        /// <param name="dic"></param>
        /// <param name="key">关键字</param>
        /// <param name="DefaultValue">默认值</param>
        /// <returns></returns>
        public static string GetValue(this Dictionary<string, object> dic, string key, string DefaultValue = null)
        {
            object val;
            if (dic.TryGetValue(key, out val))
            {
                if (val == null)
                    return "";
                return val.ToString();
            }
            if (DefaultValue != null)
                return DefaultValue;
            return "";
        }
    }
}

       

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

    0条评论

    发表

    请遵守用户 评论公约