C#中Json和List/DataSet相互转换
#region List<T> 转 Json
/// <summary>
/// List<T> 转 Json
/// </summary>
/// <typeparam name="T">实体对象</typeparam>
/// <param name="Obj">List<T>对象</param>
/// <returns></returns>
public static string ObjectToJson<T>(T obj)
{
try
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
catch
{
//转换失败
return null;
}
}
#endregion
#region Json 转 List<T>
/// <summary>
/// Json 转 List<T>
/// </summary>
/// <param name="json">待转换字符串</param>
/// <param name="t">Json被转换类型</param>
/// <returns></returns>
public static Object JsonToObject(string json, Type t)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(t);
try
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
return serializer.ReadObject(ms);
}
}
catch
{
//转换失败
return null;
}
}
#endregion
#region DataTable 转Json
/// <summary>
/// DataTable 转Json
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTableToJson(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
try
{
jsonBuilder.Append("[");//转换成多个model的形式
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("]");
}
catch (Exception ex)
{
//TODO
throw new Exception(ex.Message);
}
return jsonBuilder.ToString();
}
#endregion
#region 将DataSet转Json
/// <summary>
/// 将DataSet转化成JSON数据
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public static string DataSetToJson(DataSet ds)
{
StringBuilder jsonBuilder = new StringBuilder();
try
{
jsonBuilder.Append("[");
for (int i = 0; i < ds.Tables.Count; i++)
{
jsonBuilder.AppendFormat("T{0}:[", (i + 1));
for (int j = 0; j < ds.Tables[i].Rows.Count; j++)
{
jsonBuilder.Append("{");
for (int k = 0; k < ds.Tables[i].Columns.Count; k++)
{
jsonBuilder.AppendFormat("{0}:{1}", ds.Tables[i].Columns[k].ColumnName, ds.Tables[i].Rows[j][k].ToString());
if (k != ds.Tables[i].Columns.Count - 1)
jsonBuilder.Append(",");
}
jsonBuilder.Append("}");
if (j != ds.Tables[i].Rows.Count - 1)
jsonBuilder.Append(",");
}
jsonBuilder.Append("]");
if (i != ds.Tables.Count - 1)
jsonBuilder.Append(",");
}
jsonBuilder.Append("]");
}
catch (Exception ex)
{
//TODO
throw new Exception(ex.Message);
}
return jsonBuilder.ToString();
}
#endregion
C#中Json和List/DataSet相互转换的更多相关文章
- JQuery中 json 和字符串直接相互转换
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串:JSON.stringify(jsonObj); IE中可能对unicode使用“ ...
- android开发中json与java对象相互转换
json与java对象的相互转换.(使用com.google.gson) 在Android开发过程中,客户端总是需要从服务器获取数据,包括XML和json格式,目前json格式的数据使用较为普遍,所以 ...
- JS中JSON和string字符串相互转换
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...
- DateTable与List<T>相互转换 及JSON与DataTable(DataSet)相互转化
http://www.360doc.com/content/13/0712/09/10504424_299336674.shtml Linq处理List数据 http://blog.163.com/l ...
- js中 json对象与json字符串相互转换的几种方式
以下总结js中 json对象与json字符串相互转换的几种方式: 一.JSON对象转化为JSON字符串 1.使用JSON.stringify()方法进行转换 该方法不支持较老版本的IE浏览器,比如:i ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- android中Json的一些应用
JSON(JavaScript Object Notation) :一种轻量级的数据交换格式,基于JavaScript的一个子集. JSON采用完全独立于语言的文本格式,使JSON成为理想的数据交换语 ...
- 解决MVC中JSON字符长度超出限制的异常
解决MVC中JSON字符长度超出限制的异常 解决方法如下: <configuration> <system.web.extensions> <scripting> ...
- Asp.net中Json的序列化和反序列化(一)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
随机推荐
- sql语句添加约束
sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...
- 20141017--循环语句whlie,do
int n = 0; ; ) {//n必须小于100,如果等于100则会再进来进行一次运算,变为101. //因为下面的语句中用到了continue,状态改变n++不能用到最后 n++; ) { m ...
- OC4_XML文件解析
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-// ...
- webSphere集群部署主要步骤
1.系统管理-节点,添加本机节点和另外一台机器的节点2.建立集群服务cluster,添加成员节点3.将应用部署到集群服务cluster4.将数据库源分别建立到节点作用域5.后续步骤参照安装手册 注意事 ...
- 判断Featureclass的类型
一个Featureclass可以是Shapefile Feature Class.Personal Geodatabase Feature Class.File Geodatabase Feature ...
- C# 玩家昵称屏蔽敏感字眼
功能:使用正则 对玩家昵称处理,如果含有 屏蔽字库里的敏感字眼进行屏蔽.已封装成dll 1.屏蔽字库处理成所需要的正则格式:(所需正则表达式格式:".*((XX)|(XX)|(XX)|.. ...
- Entity Framework 一次加载许多个 Fluent API 映射
可通过多种方法来指定模型的 Fluent 映射(从类到数据库). 1.直接在 DbContext 类的 OnModelCreating 方法中进行映射,如下所示: protected overrid ...
- 【转】MyEclipse快捷键大全(绝对全)
ref:http://www.douban.com/note/254195820/?type=like# ctrl+w 关闭单个窗口 F3 跳转到类.变量的声明 F11 运行上次程序 Ctrl + F ...
- 前端工程搭建NodeJs+gulp+bower
需要node.npm的事先安装!! 1.nodejs安装程序会在环境变量中添加两个变量: 系统环境变量中:path 增加C:\Program Files\nodejs\ 因为在该目下存在node.ex ...
- php中echo、print、print_r、printf的返回值
1.echo 无返回值,是一个语言结构.在输出多个参数时不可以使用小括号; 2.print返回值为1:如:$x = 0; echo print $x."<br/>";/ ...