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的简单介绍 ...
随机推荐
- 微软SQLHelper.cs类 中文版
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Co ...
- Mac下利用eclipse打包cocos2dx安卓apk
上一篇博客中我们已经配置好了JDK和ANT,接下来我们就可以使用eclipse将我们开发好的cocos2dx项目进行打包了. 首先,我们需要准备好下面的内容 配置环境变量,打开"终端&quo ...
- OC6_代理的基本概念
// // Person.h // OC6_代理的基本概念 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhang ...
- Jquery 学习三
一.each语句 1.each语句的功能 在jQuery中,通过$函数获取的都是jQuery对象.通过测试可知,jQuery对象是一个类数组的特殊对象,其是DOM对象的集合.而each语句就是专门用于 ...
- 十个最常见的Java字符串问题
翻译自:Top 10 questions of Java Strings 1.怎样比较字符串?用”==”还是用equals()? 简单地说,”==”测试两个字符串的引用是否相同,equals()测试两 ...
- ADO.NET笔记——读取二进制大对象(BLOB)
相关知识: 在SQL Server中,一般情况下,每行数据的总长度不能超过8K字节.因此,下列数据类型的长度,也不能超过8K字节:binary,char(),nchar(),varchar(),nva ...
- 节点属性(DOM对象)
节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...
- laravel--has方法--查看关联关系
has()方法可以用来查询是否有关联关系的一个东西,一般其他的has方法 就是判断这个里面有没有值 $packageOrders = Company::has('packages')->get( ...
- 判断php数组维度的小例子
分享一例判断php数组维度的代码,供大家参考. 如下所示: <?php /** * 返回数组的维度 * @param [type] $arr [description] * @return [t ...
- 深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
在某些参考资料中是说这两个方法任选其一就可,但经我测试,必须两个方法同时使用,才不会再出现错误提示 PHP Warning: strtotime(): It is not safe to rely o ...