DataTable,List和Json的转换
using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using System.Reflection;
/// <summary>
/// 将DataTable或Ilist<>转换成JSON格式
/// </summary>
public class ToJson
{
public ToJson()
{
}
//DataTable转成Json
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();
}
//List转成json
public static string ObjectToJson<T>(string jsonName, IList<T> IL)
{
StringBuilder Json = new StringBuilder();
Json.Append("{\"" + jsonName + "\":[");
if (IL.Count > 0)
{
for (int i = 0; i < IL.Count; i++)
{
T obj = Activator.CreateInstance<T>();
Type type = obj.GetType();
PropertyInfo[] pis = type.GetProperties();
Json.Append("{");
for (int j = 0; j < pis.Length; j++)
{
Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\"");
if (j < pis.Length - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (i < IL.Count - 1)
{
Json.Append(",");
}
}
}
Json.Append("]}");
return Json.ToString();
}
}
2各种数据集转换为json/// <summary>
/// 对象转换为Json字符串
/// </summary>
/// <param name="jsonObject">对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(object jsonObject)
{
string jsonString = "{";
PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
for (int i = 0; i < propertyInfo.Length; i++)
{
object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
string value = string.Empty;
if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)
{
value = "'" + objectValue.ToString() + "'";
}
else if(objectValue is string)
{
value = "'" + ToJson(objectValue.ToString()) + "'";
}
else if (objectValue is IEnumerable)
{
value = ToJson((IEnumerable)objectValue);
}
else
{
value = ToJson(objectValue.ToString());
}
jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ",";
}
return Json.DeleteLast(jsonString) + "}";
}
/// <summary>
/// 对象集合转换Json
/// </summary>
/// <param name="array">集合对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(IEnumerable array)
{
string jsonString = "[";
foreach (object item in array)
{
jsonString += Json.ToJson(item) + ",";
}
return Json.DeleteLast(jsonString) + "]";
}
/// <summary>
/// 普通集合转换Json
/// </summary>
/// <param name="array">集合对象</param>
/// <returns>Json字符串</returns>
public static string ToArrayString(IEnumerable array)
{
string jsonString = "[";
foreach (object item in array)
{
jsonString = ToJson(item.ToString()) + ",";
}
return Json.DeleteLast(jsonString) + "]";
}
/// <summary>
/// 删除结尾字符
/// </summary>
/// <param name="str">需要删除的字符</param>
/// <returns>完成后的字符串</returns>
private static string DeleteLast(string str)
{
if (str.Length > 1)
{
return str.Substring(0, str.Length - 1);
}
return str;
}
/// <summary>
/// Datatable转换为Json
/// </summary>
/// <param name="table">Datatable对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DataTable table)
{
string jsonString = "[";
DataRowCollection drc = table.Rows;
for (int i = 0; i < drc.Count; i++)
{
jsonString += "{";
foreach (DataColumn column in table.Columns)
{
jsonString += "\"" + ToJson(column.ColumnName) + "\":";
if (column.DataType == typeof(DateTime) || column.DataType == typeof(string))
{
jsonString += "\"" + ToJson(drc[i][column.ColumnName].ToString()) + "\",";
}
else
{
jsonString += ToJson(drc[i][column.ColumnName].ToString()) + ",";
}
}
jsonString = DeleteLast(jsonString) + "},";
}
return DeleteLast(jsonString) + "]";
}
/// <summary>
/// DataReader转换为Json
/// </summary>
/// <param name="dataReader">DataReader对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DbDataReader dataReader)
{
string jsonString = "[";
while (dataReader.Read())
{
jsonString += "{";
for (int i = 0; i < dataReader.FieldCount; i++)
{
jsonString += "\"" + ToJson(dataReader.GetName(i)) + "\":";
if (dataReader.GetFieldType(i) == typeof(DateTime) || dataReader.GetFieldType(i) == typeof(string))
{
jsonString += "\"" + ToJson(dataReader[i].ToString()) + "\",";
}
else
{
jsonString += ToJson(dataReader[i].ToString()) + ",";
}
}
jsonString = DeleteLast(jsonString) + "}";
}
dataReader.Close();
return DeleteLast(jsonString) + "]";
}
/// <summary>
/// DataSet转换为Json
/// </summary>
/// <param name="dataSet">DataSet对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DataSet dataSet)
{
string jsonString = "{";
foreach (DataTable table in dataSet.Tables)
{
jsonString += "\"" + ToJson(table.TableName) + "\":" + ToJson(table) + ",";
}
return jsonString = DeleteLast(jsonString) + "}";
}
/// <summary>
/// String转换为Json
/// </summary>
/// <param name="value">String对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(string value)
{
if (string.IsNullOrEmpty(value))
{
return string.Empty;
}
string temstr;
temstr = value;
temstr = temstr.Replace("{", "{").Replace("}", "}").Replace(":", ":").Replace(",", ",").Replace("[", "【").Replace("]", "】").Replace(";", ";").Replace("\n", "<br/>").Replace("\r", "");
temstr = temstr.Replace("\t", " ");
temstr = temstr.Replace("'", "\'");
temstr = temstr.Replace(@"\", @"\\");
temstr = temstr.Replace("\"", "\"\"");
return temstr;
}
DataTable,List和Json的转换相关推荐
- Datatable/Dataset 转 JSON方法
当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...
- gson java 对象_Gson把json串转换成java实体对象
Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...
- django 使用json.dumps转换queryset的datatime报错问题解决
django 使用json.dumps转换queryset的datatime报错问题解决 参考文章: (1)django 使用json.dumps转换queryset的datatime报错问题解决 ( ...
- python与excel的关系-使用python对excle和json互相转换的示例
python 版本:2.7 只是读取excel的话可以直接使用xlrd 1.excle to json 代码如下 # -*-coding:utf8 -*- import xlrd from colle ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...
json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...
- Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...
- Jackson使用:String 与对象互转、Jackson 从 json 字符串转换出对象
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.从json字符串转换出对象 Pager类: import com.fasterxml.jacks ...
- json字符串转换成json对象
Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 代码如下: $.parseJSON( ...
- JSON.stringify转换Date不正确的解決方法
JSON.stringify转换Date不正确的原因:国际时区(UTC)和中国时区(GMT)的原因,东八区+8等于国际时区. 解决方法,重新Es5的Date.prototype.toJSON方法,代码 ...
- json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...
1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...
最新文章
- 【青少年编程(第26周)】一下子多了很多事!
- 【Java】 LeetCode 622. 设计循环队列 (有关实现循环队列的讲解)
- 深度丨全球14家顶尖 AI 产业巨头深度学习实力及战略分析
- Linux下Nginx的安装
- 【3.1】学习C++之再逢const
- ubuntu9.04换源
- oracle 正则表达式拆分字符串,oracle中通过正则表达式函数处理逗号分隔的字段...
- GARFIELD@12-20-2004
- pitr 原理_PostgreSQL基于时间点恢复(PITR)
- Linux Intel网卡IGB驱动修改mac地址
- KVM Virtual Networking Concepts
- log4c移植到android,使用Android Studio调用C++ 代码-log4cplus
- Linq to xml:检索
- PHP特性整合(PHP5.X到PHP7.1.x)
- 凤凰项目节选内容、记录和重新描述
- android ProgressBar自定义半圆形进度条
- 关于EAN13码的设置问题
- Caused by: java.lang.RuntimeException: Font asset not found fonts/SYFZLTKHJW.TTF
- 获取与设置checkbox选中状态
- 网络组建与维护(第2版)笔记
热门文章
- mount: RPC: Unable to receive; errno = Connection refused 的解决方法
- IBM最新调研表明:大数据等于大回报
- ORACLE 数据库的级联查询 一句sql搞定(部门多级)
- js学习笔记(新手向)
- Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net...
- ArcEngine 相关-转载
- jquery on()方法off()方法
- 11.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 自定义插件
- 6.GitLab 分支管理
- 127.自己开发一个 PHP 框架