การทำ Serialize และ Deserialize

1.การทำ Serialize และ Deserialize ออบเจ็กส์
2.การทำ Serialize และ Deserialize ลิสต์ของออบเจ็กส์

JavaScriptSerializer Class

1.การทำ Serialize และ Deserialize ออบเจ็กส์

การส่งข้อมูลแบบ REST เราจะมัดข้อมูลไปเป็นก้อนแล้วค่อยส่ง เรียกว่าการทำ Serialize
และการรับข้อมูลเราจะแกะข้อมูลที่ได้รับมา เรียกว่าการทำ Deserialize

using System;
using System.Web.Script.Serialization;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Person person = new Person() { PersonID = 1, Name = "Bryon Hetrick", Registered = true };

            var serializer = new JavaScriptSerializer();
            var serializedResult = serializer.Serialize(person);
            // Produces string value of:
            //     {"PersonID":1,"Name":"Bryon Hetrick","Regi stered":true},
            
            var deserializedResult = serializer.Deserialize<Person>(serializedResult);
        }
    }

    public class Person
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public bool Registered { get; set; }
    }
}

จะได้ serializedResult มีชนิดเป็น string มีค่าเป็น “{\”PersonID\”:1,\”Name\”:\”Bryon Hetrick\”,\”Registered\”:true}”

และ deserializedResult มีชนิดเป็น Person

2.การทำ Serialize และ Deserialize ลิสต์ของออบเจ็กส์

ถ้าต้องการรับ-ส่งข้อมูลมากกว่า 1 ก้อน เราใช้ List<> มาช่วยมัดข้อมูลหลายๆก้อนให้เข้าไว้ด้วยกัน

using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var RegisteredUsers = new List<Person>();
            RegisteredUsers.Add(new Person() { PersonID = 1, Name = "Bryon Hetrick", Registered = true });
            RegisteredUsers.Add(new Person() { PersonID = 2, Name = "Nicole Wilcox", Registered = true });
            RegisteredUsers.Add(new Person() { PersonID = 3, Name = "Adrian Martinson", Registered = false });
            RegisteredUsers.Add(new Person() { PersonID = 4, Name = "Nora Osborn", Registered = false });

            var serializer = new JavaScriptSerializer();
            var serializedResult = serializer.Serialize(RegisteredUsers);
            // Produces string value of:
            // [
            //     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
            //     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
            //     {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
            //     {"PersonID":4,"Name":"Nora Osborn","Registered":false}
            // ]

            var deserializedResult = serializer.Deserialize<List<Person>>(serializedResult);
            // Produces List with 4 Person objects
        }
    }

    public class Person
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public bool Registered { get; set; }
    }
}

จะได้ serializedResult มีชนิดเป็น string มีค่าเป็น  “[{\”PersonID\”:1,\”Name\”:\”Bryon Hetrick\”,\”Registered\”:true},{\”PersonID\”:2,\”Name\”:\”Nicole Wilcox\”,\”Registered\”:true},{\”PersonID\”:3,\”Name\”:\”Adrian Martinson\”,\”Registered\”:false},{\”PersonID\”:4,\”Name\”:\”Nora Osborn\”,\”Registered\”:false}]
และ deserializedResult มีชนิดเป็น System.Collections.Generic.List<Person> หรือ
List<Person>