zoukankan      html  css  js  c++  java
  • .NET:序列化和反序列化

    .NET:序列化和反序列化

    需要反序列化的字符串:

    {
      "LouPanID": "sample string 1",
      "LouPanHao": "sample string 2",
      "ChengShi": "sample string 3",
      "LouPanMing": "sample string 4",
      "LianXiRenMing": "sample string 5",
      "LianXiRenDianHua": "sample string 6",
      "ShouLouDiZhi": "sample string 7",
      "WuYeLeiXing": "sample string 8",
      "WuYeDiZhi": "sample string 9",
      "ShiFouDaiLi": "sample string 10",
      "DaiLiGongSi": "sample string 11",
      "ShiFouYouYuShou": "sample string 12",
      "ShiFouMianLiuShui": "sample string 13",
      "YuShouZhengHao": "sample string 14",
      "SuoShuQuYu": "sample string 15"
    }

    类结构:

        public class BuildingInfo
        {
            public string LouPanID { get; set; }
            public string LouPanHao { get; set; }
            public string ChengShi { get; set; }
            public string LouPanMing { get; set; }
            public string LianXiRenMing { get; set; }
            public string LianXiRenDianHua { get; set; }
            public string ShouLouDiZhi { get; set; }
            public string WuYeLeiXing { get; set; }
            public string WuYeDiZhi { get; set; }
            public string ShiFouDaiLi { get; set; }
            public string DaiLiGongSi { get; set; }
            public string ShiFouYouYuShou { get; set; }
            public string ShiFouMianLiuShui { get; set; }
            public string YuShouZhengHao { get; set; }
            public string SuoShuQuYu { get; set; }
        }

    使用System.Runtime.Serialization.Json.DataContractJsonSerializer序列化/反序列化

    class Program
        {
            static void Main(string[] args)
            {
                //反序列化
                string jsonBody = @"{
                                      ""LouPanID"": ""sample string 1"",
                                      ""LouPanHao"": ""sample string 2"",
                                      ""ChengShi"": ""sample string 3"",
                                      ""LouPanMing"": ""sample string 4"",
                                      ""LianXiRenMing"": ""sample string 5"",
                                      ""LianXiRenDianHua"": ""sample string 6"",
                                      ""ShouLouDiZhi"": ""sample string 7"",
                                      ""WuYeLeiXing"": ""sample string 8"",
                                      ""WuYeDiZhi"": ""sample string 9"",
                                      ""ShiFouDaiLi"": ""sample string 10"",
                                      ""DaiLiGongSi"": ""sample string 11"",
                                      ""ShiFouYouYuShou"": ""sample string 12"",
                                      ""ShiFouMianLiuShui"": ""sample string 13"",
                                      ""YuShouZhengHao"": ""sample string 14"",
                                      ""SuoShuQuYu"": ""sample string 15""
                                    }";
                BuildingInfo bi = new BuildingInfo();
                DataContractJsonSerializer JsonSerializer = new DataContractJsonSerializer(typeof(BuildingInfo));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonBody));
                bi = (BuildingInfo)JsonSerializer.ReadObject(ms);
                //序列化
                DataContractJsonSerializer _jsonSerializer = new DataContractJsonSerializer(typeof(BuildingInfo));
                MemoryStream _ms = new MemoryStream();
                _jsonSerializer.WriteObject(_ms, bi);
                string _jsonBody = Encoding.UTF8.GetString(_ms.ToArray());
                _ms.Close();
            }
        }
    
        [DataContract]
        class BuildingInfo
        {
            [DataMember]
            public string LouPanID { get; set; }
            [DataMember]
            public string LouPanHao { get; set; }
            [DataMember]
            public string ChengShi { get; set; }
            [DataMember]
            public string LouPanMing { get; set; }
            [DataMember]
            public string LianXiRenMing { get; set; }
            [DataMember]
            public string LianXiRenDianHua { get; set; }
            [DataMember]
            public string ShouLouDiZhi { get; set; }
            [DataMember]
            public string WuYeLeiXing { get; set; }
            [DataMember]
            public string WuYeDiZhi { get; set; }
            [DataMember]
            public string ShiFouDaiLi { get; set; }
            [DataMember]
            public string DaiLiGongSi { get; set; }
            [DataMember]
            public string ShiFouYouYuShou { get; set; }
            [DataMember]
            public string ShiFouMianLiuShui { get; set; }
            [DataMember]
            public string YuShouZhengHao { get; set; }
            [DataMember]
            public string SuoShuQuYu { get; set; }
        }

    如果序列化和反序列化的是一个集合,将bi的类型改为List<BuildingInfo>接口

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Json;
    using System.Text;
    
    namespace Topsur.Test.Serialize
    {
        class Program
        {
            static void Main(string[] args)
            {
                //反序列化
                #region jsonBody
                string jsonBody = @"[
                                        {
                                        ""LouPanID"": ""1"",
                                        ""LouPanHao"": ""sample string 2"",
                                        ""ChengShi"": ""sample string 3"",
                                        ""LouPanMing"": ""sample string 4"",
                                        ""LianXiRenMing"": ""sample string 5"",
                                        ""LianXiRenDianHua"": ""sample string 6"",
                                        ""ShouLouDiZhi"": ""sample string 7"",
                                        ""WuYeLeiXing"": ""sample string 8"",
                                        ""WuYeDiZhi"": ""sample string 9"",
                                        ""ShiFouDaiLi"": ""sample string 10"",
                                        ""DaiLiGongSi"": ""sample string 11"",
                                        ""ShiFouYouYuShou"": ""sample string 12"",
                                        ""ShiFouMianLiuShui"": ""sample string 13"",
                                        ""YuShouZhengHao"": ""sample string 14"",
                                        ""SuoShuQuYu"": ""sample string 15""
                                        },
                                        {
                                        ""LouPanID"": ""2"",
                                        ""LouPanHao"": ""sample string 2"",
                                        ""ChengShi"": ""sample string 3"",
                                        ""LouPanMing"": ""sample string 4"",
                                        ""LianXiRenMing"": ""sample string 5"",
                                        ""LianXiRenDianHua"": ""sample string 6"",
                                        ""ShouLouDiZhi"": ""sample string 7"",
                                        ""WuYeLeiXing"": ""sample string 8"",
                                        ""WuYeDiZhi"": ""sample string 9"",
                                        ""ShiFouDaiLi"": ""sample string 10"",
                                        ""DaiLiGongSi"": ""sample string 11"",
                                        ""ShiFouYouYuShou"": ""sample string 12"",
                                        ""ShiFouMianLiuShui"": ""sample string 13"",
                                        ""YuShouZhengHao"": ""sample string 14"",
                                        ""SuoShuQuYu"": ""sample string 15""
                                        },
                                        {
                                        ""LouPanID"": ""3"",
                                        ""LouPanHao"": ""sample string 2"",
                                        ""ChengShi"": ""sample string 3"",
                                        ""LouPanMing"": ""sample string 4"",
                                        ""LianXiRenMing"": ""sample string 5"",
                                        ""LianXiRenDianHua"": ""sample string 6"",
                                        ""ShouLouDiZhi"": ""sample string 7"",
                                        ""WuYeLeiXing"": ""sample string 8"",
                                        ""WuYeDiZhi"": ""sample string 9"",
                                        ""ShiFouDaiLi"": ""sample string 10"",
                                        ""DaiLiGongSi"": ""sample string 11"",
                                        ""ShiFouYouYuShou"": ""sample string 12"",
                                        ""ShiFouMianLiuShui"": ""sample string 13"",
                                        ""YuShouZhengHao"": ""sample string 14"",
                                        ""SuoShuQuYu"": ""sample string 15""
                                        }
                                    ]";
                #endregion
                
                List<BuildingInfo> bi = new List<BuildingInfo>();
                DataContractJsonSerializer JsonSerializer = new DataContractJsonSerializer(typeof(List<BuildingInfo>));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonBody));
                bi = (List<BuildingInfo>)JsonSerializer.ReadObject(ms);
                //序列化
                DataContractJsonSerializer _jsonSerializer = new DataContractJsonSerializer(typeof(List<BuildingInfo>));
                MemoryStream _ms = new MemoryStream();
                _jsonSerializer.WriteObject(_ms, bi);
                string _jsonBody = Encoding.UTF8.GetString(_ms.ToArray());
                _ms.Close();
    
    
    
            }
        }
    
        [DataContract]
        class BuildingInfo
        {
            [DataMember]
            public string LouPanID { get; set; }
            [DataMember]
            public string LouPanHao { get; set; }
            [DataMember]
            public string ChengShi { get; set; }
            [DataMember]
            public string LouPanMing { get; set; }
            [DataMember]
            public string LianXiRenMing { get; set; }
            [DataMember]
            public string LianXiRenDianHua { get; set; }
            [DataMember]
            public string ShouLouDiZhi { get; set; }
            [DataMember]
            public string WuYeLeiXing { get; set; }
            [DataMember]
            public string WuYeDiZhi { get; set; }
            [DataMember]
            public string ShiFouDaiLi { get; set; }
            [DataMember]
            public string DaiLiGongSi { get; set; }
            [DataMember]
            public string ShiFouYouYuShou { get; set; }
            [DataMember]
            public string ShiFouMianLiuShui { get; set; }
            [DataMember]
            public string YuShouZhengHao { get; set; }
            [DataMember]
            public string SuoShuQuYu { get; set; }
        }
    
    }
    View Code

     可以封装成类

        public class JsonSerializeHelper
        {
            public static string Serialize<T>(T t)
            {
                DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream();
                jsonSerializer.WriteObject(ms, t);
                string jsonResult = Encoding.UTF8.GetString(ms.ToArray());
                ms.Close();
                return jsonResult;
            }
    
            public static T Deserialize<T>(string jsonBody)
            {
                DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonBody));
                T objResult=(T)jsonSerializer.ReadObject(ms);
                ms.Close();
                return objResult;
            }
        }
  • 相关阅读:
    10.25T2 二维线段树
    10.25T1 模拟+栈
    10.24T3 解方程 取模意义下运算+秦九韶算法
    10.24T2 树链剖分
    10.24T1 树形DP
    10.23T3 杨辉三角上做莫队
    10.23T2 二分+二分图(滑稽)
    10.23T1 杨辉三角
    10.22T6 水题
    10.22T4 模拟DP
  • 原文地址:https://www.cnblogs.com/MQNH/p/5623169.html
Copyright © 2011-2022 走看看