Xml、Json序列化

Xml序列化:

  public class XmlHelper
    {
        private static string XmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings["XmlPath"]);

        public static T FileToObject<T>(string fileName) where T : new()
        {
            string fullName = Path.Combine(XmlPath, fileName);
            if (File.Exists(fullName))
            {
                using (Stream fStream = new FileStream(fullName, FileMode.Open, FileAccess.ReadWrite))
                {
                    XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
                    return (T)xmlFormat.Deserialize(fStream);
                }
            }
            else
            {
                return default(T);
            }

        }

        public static void ObjectToFile<T>(T obj, string fileName) where T : new()
        {
            string fullName = Path.Combine(XmlPath, fileName);
            string fullPath = Path.GetDirectoryName(fullName);
            if (!Directory.Exists(fullPath))
            {
                Directory.CreateDirectory(fullPath);
            }
            using (Stream fStream = new FileStream(fullName, FileMode.Create, FileAccess.ReadWrite))
            {
                XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
                xmlFormat.Serialize(fStream, obj);
            }
        }

        public static string ObjectToString<T>(T obj) where T : new()
        {
            XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
            Stream stream = new MemoryStream();
            xmlSerializer.Serialize(stream, obj);
            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }

        public static  T StringToObject<T>(string content) where T : new()
        {
            using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content)))
            {
                XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
                return (T)xmlFormat.Deserialize(stream);
            }
        }
    }

Json序列化:

/// <summary>
    /// Json序列化器
    /// </summary>
    public class JsonHelper
    {
        private static string JsonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings["JsonPath"]);

        public static T FileToObject<T>(string fileName) where T : new()
        {
            string fullName = Path.Combine(JsonPath, fileName);
            if (File.Exists(fullName))
            {
                return StringToObject<T>(File.ReadAllText(fullName, Encoding.Default));
            }
            else
            {
                return default(T);
            }
        }

        public static void ObjectToFile<T>(T obj, string fileName) where T : new()
        {
            string fullName = Path.Combine(JsonPath, fileName);
            string fullPath = Path.GetDirectoryName(fullName);
            if (!Directory.Exists(fullPath))
            {
                Directory.CreateDirectory(fullPath);
            }
            using (FileStream fileStream = File.Create(fullName))
            {
                string text = JsonConvert.SerializeObject(obj);
                byte[] bytes = Encoding.Default.GetBytes(text);
                fileStream.Write(bytes, 0, bytes.Length);
            }
        }

        public static string ObjectToString<T>(T obj) where T : new()
        {
            return JsonConvert.SerializeObject(obj);
        }

        public static T StringToObject<T>(string content) where T : new()
        {
            return JsonConvert.DeserializeObject<T>(content);
        }
    }
时间: 2024-10-19 15:49:33

Xml、Json序列化的相关文章

wp8.1 Study11:APP里文件读写和使用XML和Json序列化

一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStorageFile(string filename, string text) { var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹 StorageFile file = await fold.CreateFil

C# 二进制、Xml、Json序列化和反序列化

昨天利用业余时间对比了下C#中三种序列化方式(二进制.Xml.Json),综合来看json方式生成的字节数组长度最短,但当你需要序列化的对象中包括byte[]类型,且其长度较长时,序列化后,xml方式的长度较json方式更短.xml方式中对byte[]做了base64转换. 最后综合三种情况,写了一个基于泛型的通用类来完成序列化和反序列化操作,仅供参考,若有什么错误之处,还请指教. using System; using System.Collections.Generic; using Sys

Json序列化

最近在学习FyiReporting的源码,参考FyiReporting的报表对象定义,结合自己在工作中开发报表的应用场景,自己设计了一套报表对象定义,实现在报表设计器中报表对象的修改,通过序列化成Json对象来达到存储报表对象,相对于FyiReporting报表直接对报表定义的XML操作省去编写大量直接解析XML文档的方法,可能会带来点效率损失.本文主要目的在总结自己在序列化对象的时候对类信息标记常用用法,不在于对FyiReporting做过多探讨.首先自己写的Json序列化操作的类: clas

Json序列化之.NET开源类库Newtonsoft.Json的研究

一.Json简介                                                                                                                    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,

DotNet的JSON序列化与反序列化

JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有两种表示结构,对象和数组,JSON 数据的书写格式是:名称/值对. 在vs解决方案中以前采用xml树的形式,组织项目的结构.在新的.net core中,项目的解决方案采用json作为项目的结构说明. 在.net的前后台数据交互中,采用序列化对象为json,前端ajax接受传输数据,反序列化为对象,在

基于Json序列化和反序列化通用的封装

1. 最近项目已经上线了 ,闲暇了几天 想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用.方便后期的扩展以及开发使用. 2. 什么是 JSON ? JSON:JavaScript 对象表示法(JavaScript Object Notation).JSON 是存储和交换文本信息的语法.类似 XML.JSON 比 XML 更小.更快,更易解析.  现在开发Web应用程序 JSON 是 必不可少

WCF传输1-你是否使用过压缩或Json序列化?

1.当遇到需要传输大量数据时,怎么样传输数据? 2.压缩数据有哪几种常见的方式? 问题1解答:通过压缩来传输数据 问题2解答: (1)WCF自带的压缩方式 (2)自定义WCF binding进行压缩 (3)将对象序列化为JSON格式 今天来探讨一下WCF自带的压缩方式Gzip和Json序列化 我的其他WCF文章: WCF安全1-开篇 WCF安全2-非对称加密 WCF安全3-Transport与Message安全模式 WCF传输1-你是否使用过压缩或Json序列化? 先上图: 1.WCF自带的压缩

C#中JSON序列化和反序列化

json序列化和反序列化帮助类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.IO; using System.Text.RegularExpressions; using System.We

C# testJsonAsXMLNodeAttribute - XML&amp; json &amp; Collections - XmlNode, XmlElement, XmlAttribute,Dictionary,List

testJsonAsXMLNodeAttribute using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace ParseXML { class Program { static void Main(string[] arg