.Net Json解析帮助类

来源:互联网 发布:神户大学 知乎 编辑:程序博客网 时间:2024/05/16 05:27
    /// <summary>    /// Json帮助类    /// </summary>    public class JsonHelper    {        /// <summary>        /// 将对象序列化为JSON格式        /// </summary>        /// <param name="o">对象</param>        /// <returns>json字符串</returns>        public static string SerializeObject(object o)        {            string json = JsonConvert.SerializeObject(o);            return json;        }        /// <summary>        /// 解析JSON字符串生成对象实体        /// </summary>        /// <typeparam name="T">对象类型</typeparam>        /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param>        /// <returns>对象实体</returns>        public static T DeserializeJsonToObject<T>(string json) where T : class        {            JsonSerializer serializer = new JsonSerializer();            StringReader sr = new StringReader(json);            object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));            T t = o as T;            return t;        }        /// <summary>        /// 解析JSON数组生成对象实体集合        /// </summary>        /// <typeparam name="T">对象类型</typeparam>        /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param>        /// <returns>对象实体集合</returns>        public static List<T> DeserializeJsonToList<T>(string json) where T : class        {            JsonSerializer serializer = new JsonSerializer();            StringReader sr = new StringReader(json);            object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));            List<T> list = o as List<T>;            return list;        }        /// <summary>        /// 反序列化JSON到给定的匿名对象.        /// </summary>        /// <typeparam name="T">匿名对象类型</typeparam>        /// <param name="json">json字符串</param>        /// <param name="anonymousTypeObject">匿名对象</param>        /// <returns>匿名对象</returns>        public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)        {            T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);            return t;        }        /**      * 对象的全部属性和属性值。用于填写json的{}内数据      * 生成后的格式类似      * "属性1":"属性值"      * 将这些属性名和属性值写入字符串列表返回      * */        private static List<string> GetObjectProperty(object o)        {            List<string> propertyslist = new List<string>();            PropertyInfo[] propertys = o.GetType().GetProperties();            foreach (PropertyInfo p in propertys)            {                propertyslist.Add("\"" + p.Name.ToString() + "\":\"" + p.GetValue(o, null) + "\"");            }            return propertyslist;        }        /**         * 将一个对象的所有属性和属性值按json的格式要求输入为一个封装后的结果。         *         * 返回值类似{"属性1":"属性1值","属性2":"属性2值","属性3":"属性3值"}         *          * */        private static string OneObjectToJSON(object o)        {            string result = "{";            List<string> ls_propertys = new List<string>();            ls_propertys = GetObjectProperty(o);            foreach (string str_property in ls_propertys)            {                if (result.Equals("{"))                {                    result = result + str_property;                }                else                {                    result = result + "," + str_property + "";                }            }            return result + "}";        }        /**           * 把对象列表转换成json串           * */        public static string toJSON<T>(List<T> objlist)        {//覆写,给懒人一个不写classname的机会            return toJSON(objlist, string.Empty);        }        public static string toJSON<T>(List<T> objlist, string classname)        {            string result = "";            if (classname.Equals(string.Empty))//如果没有给定类的名称,那么自做聪明地安一个            {                object o = objlist[0];                classname = o.GetType().ToString();            }            result += "[";            bool firstline = true;//处理第一行前面不加","号            foreach (object oo in objlist)            {                if (!firstline)                {                    result = result + "," + OneObjectToJSON(oo);                }                else                {                    result = result + OneObjectToJSON(oo) + "";                    firstline = false;                }            }            return result + "]";        }    }
原创粉丝点击