序列化
ClownFish为XML和JSON序列化提供了便捷的扩展方法
XML序列化
/// <summary>
/// XML序列化与反序列化的扩展方法类
/// </summary>
public static class XmlExtensions
{
/// <summary>
/// 将对象执行XML序列化(使用UTF-8编码)
/// </summary>
/// <param name="obj">要序列化的对象</param>
/// <returns>XML序列化的结果</returns>
public static string ToXml(this object obj)
/// <summary>
/// 从XML字符串中反序列化对象(使用UTF-8编码)
/// </summary>
/// <typeparam name="T">反序列化的结果类型</typeparam>
/// <param name="xml">XML字符串</param>
/// <returns>反序列化的结果</returns>
public static T FromXml<T>(this string xml)
/// <summary>
/// 从XML字符串中反序列化对象(使用UTF-8编码)
/// </summary>
/// <param name="s"></param>
/// <param name="type">反序列化的结果类型</param>
/// <returns></returns>
public static object FromXml(this string s, Type type)
}
JSON序列化
/// <summary>
/// JSON序列化的工具类
/// </summary>
public static class JsonExtensions
{
/// <summary>
/// 将一个对象序列化为JSON字符串。
/// </summary>
/// <param name="obj">要序列化的对象</param>
/// <returns>序列化得到的JSON字符串</returns>
public static string ToJson(this object obj)
/// <summary>
/// 将一个对象序列化为JSON字符串。
/// </summary>
/// <param name="obj">要序列化的对象</param>
/// <param name="style">JSON序列化格式</param>
/// <returns>序列化得到的JSON字符串</returns>
public static string ToJson(this object obj, JsonStyle style)
/// <summary>
/// 将一个JSON字符串反序列化为对象
/// </summary>
/// <typeparam name="T">反序列的对象类型参数</typeparam>
/// <param name="json">JSON字符串</param>
/// <returns>反序列化得到的结果</returns>
public static T FromJson<T>(this string json)
/// <summary>
/// 将一个JSON字符串反序列化为对象
/// </summary>
/// <param name="json">JSON字符串</param>
/// <param name="destType">反序列的对象类型参数</param>
/// <returns>反序列化得到的结果</returns>
public static object FromJson(this string json, Type destType)
}
示例代码
public void Json_序列化_反序列化()
{
var obj = new NameValue { Name = "aaaa", Value = "123" };
// 将对象序列化成JSON字符串
string json = obj.ToJson();
// 将JSON字符串反序列化为指定的类型
var object2 = json.FromJson<NameValue>();
}
public void Xml_序列化_反序列化()
{
var obj = new NameValue { Name = "aaaa", Value = "123" };
// 将对象序列化成XML字符串
string xml = obj.ToXml();
// 将XML字符串反序列化为指定的类型
var object2 = xml.FromXml<NameValue>();
}
/// <summary>
/// 模拟一个配置类型
/// </summary>
public class RunOption { /* 这里省略具体的参数成员 */ }
public void Xml_配置文件_序列化_反序列化()
{
RunOption option = new RunOption();
string file = @"d:\aa\xx.config";
// 将对象序列化成XML配置文件
XmlHelper.XmlSerializeToFile(option, file);
// 将XML配置文件反序列化为指定的类型
option = XmlHelper.XmlDeserializeFromFile<RunOption>(file);
}