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

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.Serialization.Json;
    using System.Text;
    using System.Web;
    using System.Xml;
    using System.Xml.Serialization;
    
    namespace wx.Common
    {
        public class SerializerHelper
        {
            /// <summary>  
            /// XML反序列化
            /// </summary>  
            /// <typeparam name="T">转换类型</typeparam>  
            /// <param name="strData">xml数据</param>  
            /// <returns></returns>  
            public static T Deserializer_XML<T>(string strData)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(T));
                using (StringReader reader = new StringReader(strData))
                {
                    return (T)serializer.Deserialize(reader);
                }
            }
    
            /// <summary>  
            /// XML序列化
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="obj"></param>  
            /// <returns></returns>  
            public static string Serializer_XML<T>(T obj)
            {
                using (StringWriter writer = new StringWriter())
                {
                    new XmlSerializer(obj.GetType()).Serialize(writer, obj);
                    return writer.ToString();
                }
            }
    
            /// <summary>  
            /// 序列化类实例为XML 并写入.xml文件
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="obj"></param>  
            /// <param name="strPath">文件地址</param>  
            /// <returns></returns>  
            public static void Serializer_XML_Writer<T>(T obj, string strPath)
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                //设置编码格式
                settings.Encoding = Encoding.UTF8;
                //换行,缩进
                settings.Indent = true;
                using (XmlWriter writer = XmlWriter.Create(strPath, settings))
                {
                    //去除默认命名空间xmlns:xsd和xmlns:xsi
                    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                    ns.Add("", "");
    
                    XmlSerializer formatter = new XmlSerializer(typeof(T));
                    formatter.Serialize(writer, obj, ns);
                }
    
            }
    
            /// <summary>  
            /// 序列化类 读取.xml文件实例为Model
            /// </summary>  
            /// <typeparam name="T">Model</typeparam>  
            /// <param name="obj"></param>  
            /// <param name="strPath">文件地址</param>  
            /// <returns></returns>  
            public static T Deserializer_XML_Reader<T>(string strPath)
            {
                using (XmlReader writer = XmlReader.Create(strPath))
                {
                    XmlSerializer formatter = new XmlSerializer(typeof(T));
                    return (T)formatter.Deserialize(writer);
                }
            }
    
            /// <summary>
            ///  Json反序列化
            /// </summary>
            /// <typeparam name="T">转换类型</typeparam>
            /// <param name="strJosn">Json数据</param>
            /// <returns></returns>
            public static T Deserializer_Json<T>(string strJosn)
            {
                //反序列化
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJosn)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                    T obj = (T)serializer.ReadObject(ms);
                    return obj;
                }
            }
    
            /// <summary>
            /// Json序列化
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static string Serializer_Json<T>(T obj)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                    serializer.WriteObject(ms, obj);
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
    
                //DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                //MemoryStream ms = new MemoryStream();
                //ser.WriteObject(ms, obj);
                //string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                //ms.Close();
                //return jsonString;
            }
    
        }
    }
    

      

  • 相关阅读:
    ubuntu14.04 安装 zoom.us
    【JulyEdu-Python基础】第 8 课:Python第三方库
    【JulyEdu-Python基础】第 7 课:Python并发编程以及系统常用模块
    【JulyEdu-Python基础】第 6 课:高级面向对象
    【JulyEdu-Python基础】第 4 课:面向对象基础
    【深度学习笔记】第 7 课:文本和序列的深度模型
    【深度学习笔记】第 6 课:卷积神经网络简介
    【JulyEdu-Python基础】第 3 课:容器以及容器的访问使用
    【JulyEdu-Python基础】第 2 课:关键字和循环控制
    【JulyEdu-Python基础】第 1 课:入门基础
  • 原文地址:https://www.cnblogs.com/Harvard-L/p/6554543.html
Copyright © 2011-2022 走看看