• 序列化与反序列化


    序列化和反序列化的三种方法:

    1.使用JavaScriptSerializer类

    2.使用DataContractJsonSerializer类

    3.使用JSON.NET类库

    第一种方法:

    //使用JavaScriptSerializer方式需要引入的命名空间,这个在程序集System.Web.Extensions.dll.中
    using System.Web.Script.Serialization;
    1.JavaScriptSerializer方式实现序列化和反序列化
                Student stu = new Student()
                   {
                       ID = 1,
                       Name = "张三",
                       Age = 2000,
                       Sex = "男"
                   };
    
                JavaScriptSerializer js = new JavaScriptSerializer();
                string jsonData = js.Serialize(stu);//序列化
                Console.WriteLine(jsonData);
    
    
                ////反序列化方式一:
                string desJson = jsonData;
                //Student model = js.Deserialize<Student>(desJson);// //反序列化
                //string message = string.Format("ID={0},Name={1},Age={2},Sex={3}", model.ID, model.Name, model.Age, model.Sex);
                //Console.WriteLine(message);
                //Console.ReadKey(); 
    
    
                ////反序列化方式2
                dynamic modelDy = js.Deserialize<dynamic>(desJson); //反序列化
                string messageDy = string.Format("动态的反序列化,ID={0},Name={1},Age={2},Sex={3}",
                    modelDy["ID"], modelDy["Name"], modelDy["Age"], modelDy["Sex"]);//这里要使用索引取值,不能使用对象.属性
                Console.WriteLine(messageDy);
                Console.ReadKey();

    或者

    //反序列化

    Student _object = Utility.Serializer.Deserialize<Student>(apiSource);//source中含有的Json字符串

    //从实体中循环获取
    foreach (var item in _object.docs)//这个想要循环获取list中多个相同的字段时只点到list名称即可
    {
    string t = item.pid;

    batchList.Add(t);

    这个方法要先建立实体

     

    第二种方法:

    //使用DataContractJsonSerializer方式需要引入的命名空间,在System.Runtime.Serialization.dll.中
    using System.Runtime.Serialization.Json;
    1.DataContractJsonSerializer方式序列化和反序列化
                Student stu = new Student()
                 {
                     ID = 1,
                     Name = "张三",
                     Sex = "男",
                     Age = 1000
                 };
                //序列化
                DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Student));
                MemoryStream msObj = new MemoryStream();
                //将序列化之后的Json格式数据写入流中
                js.WriteObject(msObj, stu);
                msObj.Position = 0;
                //从0这个位置开始读取流中的数据
                StreamReader sr = new StreamReader(msObj, Encoding.UTF8);
                string json = sr.ReadToEnd();
                sr.Close();
                msObj.Close();
                Console.WriteLine(json);
    
    
                //反序列化
                string toDes = json;
                //string to = "{"ID":"1","Name":"张三","Sex":"男","Age":"1230"}";
                using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(toDes)))
                {
                    DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Student));
                    Student model = (Student)deseralizer.ReadObject(ms);// //反序列化ReadObject
                    Console.WriteLine("ID=" + model.ID);
                    Console.WriteLine("Name=" + model.Name);
                    Console.WriteLine("Age=" + model.Age);
                    Console.WriteLine("Sex=" + model.Sex);
                }
                Console.ReadKey(); 
    2.在执行第一步的时候需要先建立实体类
    public class Student
        {
           
           public int ID { get; set; }
    
           
           public string Name { get; set; }
    
           
           public int Age { get; set; }
    
           
           public string Sex { get; set; }
        }

    第三种方法:
    //使用JSON.NET方式需要引入的命名空间,在MiniNet.Utility中
    using MiniNet.Utility;
    1.Json.NET序列化
                List<Student> lstStuModel = new List<Student>() 
                {
                
                new Student(){ID=1,Name="老黄",Age=250,Sex="男"},
                new Student(){ID=2,Name="凤姐",Age=300,Sex="女"}
                };
    
                //Json.NET序列化
                string jsonData = JsonConvert.SerializeObject(lstStuModel);
    
                Console.WriteLine(jsonData);
                Console.ReadKey();
    
    
                //Json.NET反序列化
                string json = @"{ 'Name':'C#','Age':'3000','ID':'1','Sex':'女'}";
                Student descJsonStu = JsonConvert.DeserializeObject<Student>(json);//反序列化
                Console.WriteLine(string.Format("反序列化: ID={0},Name={1},Sex={2},Sex={3}", descJsonStu.ID, descJsonStu.Name, descJsonStu.Age, descJsonStu.Sex));
                Console.ReadKey(); 
    或者

    Hashtable baseHash = JSON.JsonDecode(apiSource) as Hashtable;

    ArrayList textDemo = baseHash["docs"] as ArrayList;//list字段
    foreach (Hashtable item in textDemo)
    {
    string pid = Convert.ToInt64(item["pid"]).ToString();//循环获取list下的全部pid
    }

     
  • 相关阅读:
    cookie的过期时间
    Cookie的使用及位置
    用存储过程进行的查询拼接
    验证码的使用
    SQLHelper
    App_code的引用
    GridView使用
    javascript、ajax验证
    数据库小结(三)
    数据库操作(七)存储过程
  • 原文地址:https://www.cnblogs.com/MrReed/p/8534271.html
Copyright © 2020-2023  润新知