C#中對象序列化使用


對象序列化及反序列化
對象序列化是將編程中的對象轉換成json字符串,實現對象持久化,便於將對象信息存儲到硬盤,或進行網絡傳輸,方便不同編程語言之間進行遠程傳遞對象,序列化產生的對象信息為json的{鍵:值}格式
對象反序列化是從序列化的信息流轉提取信息,還原成對象信息
 
對象序列化使用——封裝序列化方法
//引用Newtonsoft.Json,一款.NET中開源的Json序列化和反序列化類庫
using Newtonsoft.Json;

    /// <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":"json"})</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字符串</param>
        /// <param name="anonymousTypeObject">匿名對象</param>
        /// <returns>匿名對象</returns>
        public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
        {
            T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
            return t;
        }
    }

 

對象序列化使用——序列化方法的使用
    public class JsonTest
    {
        public void Run()
        {
            Student sdudent = new Student();
            sdudent.ID = 1;
            sdudent.Name = "json";
            sdudent.Class = new Class() { Name = "CS0216", ID = 0216 };
            //實體序列化和反序列化
            string json1 = JsonHelper.SerializeObject(sdudent);
            //json1 : {"ID":1,"Name":"json","Class":{"ID":216,"Name":"CS0216"}}
            Student sdudent1 = JsonHelper.DeserializeJsonToObject<Student>(json1);
            //匿名對象解析
            var tempEntity = new { ID = 0, Name = string.Empty };
            string json5 = JsonHelper.SerializeObject(tempEntity);
            //json5 : {"ID":0,"Name":""}
            tempEntity = JsonHelper.DeserializeAnonymousType("{\"ID\":\"112\",\"Name\":\"jsontest\"}", tempEntity);
            var tempStudent = new Student();
            tempStudent = JsonHelper.DeserializeAnonymousType("{\"ID\":\"112\",\"Name\":\"jsontest\"}", tempStudent);
            Console.Read();
        }
    }
    /// <summary>
    /// 學生信息實體
    /// </summary>
    public class Student
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public Class Class { get; set; }
    }
    /// <summary>
    /// 學生班級實體
    /// </summary>
    public class Class
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM