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 = ;
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, , 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);
}
}

Xml、Json序列化的更多相关文章

  1. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  2. C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出

    从StackOverflow里找到的答案.发现对最新的Newtownsoft的JSON序列化也同样适用. https://stackoverflow.com/questions/5818513/xml ...

  3. Xml,Json,Hessian,Protocol Buffers序列化对比

    简介 这篇博客主要对Xml,Json,Hessian,Protocol Buffers的序列化和反序列化性能进行对比,Xml和Json的基本概念就不说了. Hessian:Hessian是一个轻量级的 ...

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

    一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStor ...

  5. WebApi2官网学习记录---JSON与XML的序列化

    JSON序列化: WebAPI的默认序列库使用的是Json.NET,可以在Globally中配置使用DataContractJsonSerializer 进行序列化 protected void Ap ...

  6. xml 和 json 序列化忽略字段

    xml 和 json 序列化忽略字段: @JsonIgnore @XmlTransient

  7. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................

    xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................

  8. C# 序列化详解,xml序列化,json序列化对比

    本文讲讲一些纯技术的东西.并且讲讲一些原理性的东西,和一般的百度的文章不一致,如果你对序列化不清楚,绝对可以很有收获. 技术支持QQ群(主要面向工业软件及HSL组件的):592132877  (组件的 ...

  9. json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式

     JSON序列化 /// <summary> /// JSON序列化 /// </summary> public static class SPDBJsonConvert { ...

随机推荐

  1. python 模块一览

    一个模块可以对应一个文件 同一个模块,可以import多次,但只会被导入一次 模块的导入顺序 导入模块写在文件最上面 自己写的和内置的以及扩展的分开 顺序:内置,扩展,自己写的 按字母大小写排序 一行 ...

  2. python基础5(文件操作,with语句)

    打开文件 #使用 open f = open('路径',mode = '打开模式', encoding='编码') #可以使用with语句打开,不需要关闭,可以同时打开多个文件 with open(' ...

  3. 按shift键调出命令行的脚本

    打开Notepad++,粘贴以下命令,并将文件命名为opencmdhere.reg(注意:文件编码格式为UCS-2 Little Endian,否则会导致中文乱码),再双击打开即可 Windows R ...

  4. LaTeX 矩阵

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50054363 LaTeX 写矩阵,需要 ...

  5. P2899 [USACO08JAN]手机网络Cell Phone Network

    P2899 [USACO08JAN]手机网络Cell Phone Networ题目描述 Farmer John has decided to give each of his cows a cell ...

  6. 【Codeforces】512C Fox and Dinner

    [解析]欧拉筛法,奇偶分析.建二分图,网络流 [Analysis] http://blog.csdn.net/qq574857122/article/details/43453087. 所谓的连通块就 ...

  7. moble 设备多指手势识别 (tap , double_tap , pinch)

    function(){ elem.addEventListener('touchstart', start , false) elem.addEventListener('touchend', end ...

  8. Centos7+httpd+fastcgi+rails安装

    搭建的环境: centos7 Apache/2.4.6 fastcgi2.4.6 rails4 在安装fastcgi的时候遇到了问题: 问题: .... .. In file included fro ...

  9. nodejs02---demo

    1.Hello World 打一个一个文本编辑器,在其中输入 console.log('Hello World'); 并保存为helloworld.js.打开dos窗口进入该文件的目录运行 node ...

  10. lightoj--1214--Large Division(大数取余)

    Large Division Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Submit ...