.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;
        }
    }
原文地址:https://www.cnblogs.com/MQNH/p/5623169.html