XML和JSON 序列化以及DataTable转JSON
2013-10-11 07:40
441 查看
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); } } } }
public class DataTableConvertJson { #region dataTable转换成Json格式 /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\""); jsonBuilder.Append(dt.TableName); jsonBuilder.Append("\":["); jsonBuilder.Append("["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } #endregion dataTable转换成Json格式 #region DataSet转换成Json格式 /// <summary> /// DataSet转换成Json格式 /// </summary> /// <param name="ds">DataSet</param> /// <returns></returns> public static string Dataset2Json(DataSet ds) { StringBuilder json = new StringBuilder(); foreach (DataTable dt in ds.Tables) { json.Append("{\""); json.Append(dt.TableName); json.Append("\":"); json.Append(DataTable2Json(dt)); json.Append("}"); } return json.ToString(); } #endregion /// <summary> /// Msdn /// </summary> /// <param name="jsonName"></param> /// <param name="dt"></param> /// <returns></returns> public static string DataTableToJson(string jsonName, DataTable dt) { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } Json.Append("]}"); return Json.ToString(); } }
参考:/article/5176593.html
相关文章推荐
- 【iOS开发-95】JSON反序列化、XML数据解析以及主线程中的UI更新等小细节
- DataTable 转换 Json 以及 js读取
- AJAX 原生js以及Jquery解析html,xml,txt,json格式文本
- xml序列化以及反序列化的事例
- python的序列化和反序列化以及json
- Java编程的逻辑 (63) - 实用序列化: JSON/XML/MessagePack
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
- XML序列化以及用pull解析器解析XML文件
- python 序列化及其相关模块(json,pickle,shelve,xml)详解
- 操作xml|json|以及框架的简单介绍
- JSON介绍以及和XML的对比
- jQuery表单验证以及将表单序列化为json对象小练习
- Python模块:shutil、序列化(json&pickle&shelve)、xml
- XML和Json的特点以及区别
- SAX解析,DOM解析以及XML HTML JSON之间区别
- Json的序列化与反序列化以及乱入的k_BackingField
- Newtonsoft.Json 序列化和反序列化 以及时间格式 2
- 基于JDK6的JAX-WX为客户端提供XML与JSON格式数据服务,以及客户端采用AXIS调用案例
- Java Json/xml 序列化和反序列化工具:JsonTools 和 simpleframework【附带实例】
- Android : JSON存取数据 以及 DOM读取XML数据