c# json TO xml
using System.IO;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.Runtime.Serialization.Json;
namespace Common.Core
{
public class SerializationHelper
{
private static string XmlSerialize(object o)
{
XmlSerializer ser = new XmlSerializer(o.GetType());
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
ser.Serialize(writer, o, ns);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
}
private static T XmlDeserialize<T>(string s)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.LoadXml(s);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
private static string JsonSerialize(object o)
{
using (var ms = new MemoryStream())
{
new DataContractJsonSerializer(o.GetType()).WriteObject(ms, o);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
private static T JsonDeserialize<T>(string s)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(s)))
{
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
}
/// <summary>
/// 将对象根据格式(XML/JSON)序列化成字符串结果
/// </summary>
/// <param name="o">目标对象</param>
/// <param name="format">输出格式</param>
/// <returns></returns>
public static string Serialize(object o, Format format)
{
if (format == Format.Xml)
{
return SerializationHelper.XmlSerialize(o);
}
else
{
return SerializationHelper.JsonSerialize(o);
}
}
/// <summary>
/// 将字符串根据格式(XML/JSON)反序列化成指定类型的对象
/// </summary>
/// <typeparam name="T">指定类型</typeparam>
/// <param name="s">目标字符串</param>
/// <param name="format">输入格式</param>
/// <returns></returns>
public static T Deserialize<T>(string s, Format format)
{
if (format == Format.Xml)
{
return SerializationHelper.XmlDeserialize<T>(s);
}
else
{
return SerializationHelper.JsonDeserialize<T>(s);
}
}
}
}
最新文章
- ul、li分列显示
- HTML5,jQuery,ajax基础面试
- Linux在目录中查找某个函数
- exec方法
- JavaScript-CheckBox全选/反选
- 20160207.CCPP体系详解(0017天)
- acess() 判断目录是否存在
- HTML5和CSS3实例教程[总结二]
- navicat 连接远程mysql
- Oracle索引语句整理
- 一个只有99行代码的JS流程框架(二)
- eclipse项目中丢失的R包找回方法
- WebSocket群聊与单聊
- Windows 控制面板调用命令
- PHP中$_POST和$_GET的用法
- mysql DISTINCT的用法
- Mysql初级第二天(wangyun)
- HP Notebook PCs - Updating the BIOS
- outlook还原初始设置
- stl算法:next_permutation剖析
热门文章
- iOS之tabBar随tableView的滑动而隐藏/显现
- Mysql Error: Host ‘xxx.xxx.xxx.xxx’ is not allowed to connect to
- VR技术的高速发展阶段
- (转).NET开发人员必备的可视化调试工具(你值的拥有)
- Oracl基础知识(一)
- 51nod1228 序列求和(自然数幂和)
- xamarin.Android 标记1
- 【转】Java Web 项目获取运行时路径 classpath
- Android 框架练成 教你打造高效的图片加载框架(转)
- 2016 Multi-University Training Contest 1