ホームページ  >  記事  >  ウェブフロントエンド  >  JSON のシリアル化と逆シリアル化の簡単な分析

JSON のシリアル化と逆シリアル化の簡単な分析

高洛峰
高洛峰オリジナル
2017-01-18 10:38:221672ブラウズ

方法 1: System.Web.Script.Serialization 名前空間を導入し、JavaScriptSerializer クラスを使用して単純なシリアル化クラスを実装します。 シリアル化クラス: Personnel

    public class Personnel
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

シリアル化と逆シリアル化を実行します:

protected void Page_Load(object sender, EventArgs e)
        {
            Personnel personnel = new Personnel();
            personnel.Id = 1;
            personnel.Name = "小白";
            JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
            //执行序列化
            string r1 = jsonSerializer.Serialize(personnel);

            //执行反序列化
            Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1);
         }

r1 出力結果: {"Id":1 , "Name":"小白"}
ScriptIgnore 属性を使用して、パブリック プロパティまたはパブリック フィールドをシリアル化しないようにマークできます。

        public class Personnel
        {
            [ScriptIgnore]
            public int Id { get; set; }
            public string Name { get; set; }
        }

r1 出力結果: {"Name":"小白"}

方法 2: System.Runtime.Serialization.Json 名前空間を導入し、DataContractJsonSerializer クラスを使用してシリアル化を実装する

Serialization クラス: People

        public class People
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

Executeシーケンス Deserialization

protected void Page_Load(object sender, EventArgs e)
        {
            People people = new People();
            people.Id = 1;
            people.Name = "小白";

            DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType());
            string szJson = "";
            //序列化
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, people);
                szJson = Encoding.UTF8.GetString(stream.ToArray());
            }
            //反序列化
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));
                People _people = (People)serializer.ReadObject(ms);
            }
         }

szJson 出力結果: {"Id":1,"Name":"小白"}


IgnoreDataMember: を使用して、メンバーがデータ コントラクトの一部ではないことを指定できます。 DataMember: シリアル化属性パラメーターを定義します。フィールドをマークするには DataMember 属性を使用する必要があります。そうしないと、DataMember マークは機能しません。

[DataContract]
        public class People
        {
            [DataMember(Name = "id")]
            public int Id { get; set; }
            [IgnoreDataMember]
            public string Name { get; set; }
        }

出力結果: {"id":1}

JSON シリアル化と逆シリアル化に関するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。