[asp.net]C#实现json的序列化和反序列化

在做asp.net和unity进行http通信的时候,当unity客户端发出表单请求的时候,我要将他要请求的数据以json的格式返回给客户端,让客户端来解析。服务器端这一块就涉及到json的序列化和反序列化的问题。

接下来就来举个列子,当然包括两种方法(本篇参考自:http://www.csharpwin.com/csharpspace/10822r2908.shtml)

两种方法都有例子,第一种是用泛型集合来存储的对象,然后将集合序列化一下;第二种是直接序列化的一个对象

 

复制代码
using System;

using System.Collections.Generic;

using System.Web.Script.Serialization;

using System.Configuration;

using System.Runtime.Serialization.Json;

using System.Runtime.Serialization;

using System.IO;

using System.Text;





namespace WebApplication1

{



    //方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化

    [Serializable]

    public class Person

    {

        

        private int id;

        /// <summary>

        /// id

        /// </summary>

        public int Id

        {

            get { return id; }

            set { id = value; }

        }



        private string name;

        /// <summary>

        /// 姓名

        /// </summary>

        public string Name

        {

            get { return name; }

            set { name = value; }

        }

    }



    //方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

    //可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。

    [DataContract]

    public class Person1

    {

        

        [IgnoreDataMember]

        public int Id { get; set; }



        [DataMember(Name = "name")]

        public string Name { get; set; }

        [DataMember(Name = "sex")]

        public string Sex { get; set; }



    }



    public partial class _Default : System.Web.UI.Page

    {

        string constr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

        

        protected void Page_Load(object sender, EventArgs e)

        {

            

            Person p1 = new Person();

            p1.Id = 1;

            p1.Name = "dxw";

            Person p2 = new Person();

            p2.Id = 2;

            p2.Name = "wn";



            List<Person> listperson = new List<Person>();

            listperson.Add(p1);

            listperson.Add(p2);



            JavaScriptSerializer js = new JavaScriptSerializer();

            //json序列化

            string s = js.Serialize(listperson);

            Response.Write(s);







            //方法二

            Person1 p11 = new Person1();

            p11.Id = 1;

            p11.Name = "hello";

            p11.Sex = "";

            DataContractJsonSerializer json = new DataContractJsonSerializer(p11.GetType());



            string szJson = "";



            //序列化



            using (MemoryStream stream = new MemoryStream())



            {



                json.WriteObject(stream, p11);



                szJson = Encoding.UTF8.GetString(stream.ToArray());



                Response.Write(szJson);

            }



            //反序列化



            //using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))



            //{



            //    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));



            //    Person1 _people = (Person1)serializer.ReadObject(ms);



            //}

         }

        





        protected void Button1_Click(object sender, EventArgs e)

        {

            Response.Write(constr);

        }





    }
复制代码

 

你可能感兴趣的:(asp.net)