C# Datatable、DataReader等转化json
//对象转换为Json字符串
public static string ToJson(object jsonObject)
{
object objectValue = string.Empty;
string jsonString = "{";
if (jsonObject==null)
{
return jsonString + "}";
}
PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
for (int i = 0; i < propertyInfo.Length; i++)
{
try
{
objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, BindingFlags.InvokeMethod, null, new object[] { }, 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 + ",";
}
catch (Exception ex)
{
string s = ex.Message;
}
}
jsonString.Remove(jsonString.Length - 1);
return jsonString + "}";
} //对象集合转换Json
public static string ToJson(IEnumerable array)
{
if (array == null) return "";
string jsonString = "[";
foreach (object item in array)
{
jsonString+= ToJson(item) + ",";
}
jsonString.Remove(jsonString.Length - 1);
return jsonString + "]";
}
//普通集合转换Json
public static string ToArrayString(IEnumerable array)
{
if (array == null) return "";
string jsonString = "[";
foreach (object item in array)
{
jsonString = ToJson(item.ToString()) + ",";
}
jsonString.Remove(jsonString.Length - 1, jsonString.Length);
return jsonString + "]";
}
//Datatable转换为Json
public static string ToJson(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0) return "[{}]";
StringBuilder jsonString = new StringBuilder(); jsonString.Append("[");
DataRowCollection drc = dt.Rows;
for (int i = 0; i < drc.Count; i++)
{
jsonString.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
string strKey = dt.Columns[j].ColumnName;
string strValue = drc[i][j].ToString();
Type type = dt.Columns[j].DataType;
jsonString.Append("\"" + strKey + "\":");
strValue = StringFormat(strValue, type);
if(j<dt.Columns.Count-1)
jsonString.Append(strValue + ",");
else
jsonString.Append(strValue);
}
jsonString.Append("},");
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}
//DataTable转成Json
public static string ToJson(DataTable dt, string jsonName)
{
if(string.IsNullOrEmpty(jsonName))
jsonName = dt.TableName;
StringBuilder sb = new StringBuilder();
sb.Append("{\"" + jsonName + "\":[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
Type type = dt.Rows[i][j].GetType();
sb.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));
if (j < dt.Columns.Count - 1)
{
sb.Append(",");
}
}
sb.Append("}");
if (i < dt.Rows.Count - 1)
{
sb.Append(",");
}
}
}
sb.Append("]}");
return sb.ToString();
} //DataReader转换为Json
public static string ToJson(DbDataReader dataReader)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
while (dataReader.Read())
{
jsonString.Append("{");
for (int i = 0; i < dataReader.FieldCount; i++)
{
Type type = dataReader.GetFieldType(i);
string strKey = dataReader.GetName(i);
string strValue = dataReader[i].ToString();
jsonString.Append("\"" + strKey + "\":");
strValue = StringFormat(strValue, type);
if (i < dataReader.FieldCount - 1)
{
jsonString.Append(strValue + ",");
}
else
{
jsonString.Append(strValue);
}
}
jsonString.Append("},");
}
dataReader.Close();
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
} //DataSet转换为Json
public static string ToJson(DataSet dataSet)
{
string jsonString = "{";
foreach (DataTable table in dataSet.Tables)
{
jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ",";
}
jsonString = jsonString.TrimEnd(',');
return jsonString + "}";
}
//ArrayList转化为json
public static string ArryListToJson(ArrayList alist, string jsonName)
{
string json = string.Empty;
string strSubList = "\"" + jsonName + "\":" + "[{";
for (int i = 0; i < alist.Count; i++)
{
Hashtable ht1 = (Hashtable)alist[i];
foreach (DictionaryEntry de in ht1)
{
if (de.Value is ArrayList)
{
strSubList += ArryListToJson((ArrayList)de.Value, de.Key.ToString());
strSubList += "]";
}
else
{
strSubList += "\"" + de.Key + "\":" + "\"" + de.Value + "\",";
}
}
strSubList = strSubList.Remove(strSubList.Length - 1);
strSubList += "},{";
}
if (strSubList.Length >= 2)
{
json = strSubList.Remove(strSubList.Length - 2);
}
json += "]";
return json;
}
//Hashtable To Json
public static string HashtableToJson(Hashtable hr)
{
string json = "{";
foreach (DictionaryEntry row in hr)
{
try
{
string key = "\"" + row.Key + "\":";
string value = string.Empty; if (row.Value is ArrayList)
{
key = string.Empty;
value = ArryListToJson((ArrayList)row.Value, row.Key.ToString());
value += ",";
}
else
{
value = "\"" + (row.Value == null ? "" : row.Value.ToString()) + "\",";
}
json += key + value;
}
catch (Exception ex)
{
string mess = ex.Message;
}
}
json = json.Remove(json.Length - 1);
json = json + "}";
return json;
}
//转换字符格式
private static string StringFormat(string str, Type type)
{
if (string.IsNullOrEmpty(str)) return "\"\"";
if (type == typeof(string))
{
str = "\"" + ConvertStrToSpecificationStrs(str) + "\"";
}
else if (type == typeof(DateTime))
{
str = "\"" + str + "\"";
}
else if (type == typeof(bool))
{
str = str.ToLower();
}
return str;
}
//转换字符格式
public static string ConvertStrToSpecificationStrs(string str)
{
if (string.IsNullOrEmpty(str)) return "";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
char cStr = str.ToCharArray()[i]; switch (cStr)
{
case '\"':
sb.Append("\\\""); break;
case '\\':
sb.Append("\\\\"); break;
case '/':
sb.Append("\\/"); break;
case '\b':
sb.Append("\\b"); break;
case '\f':
sb.Append("\\f"); break;
case '\n':
sb.Append("\\n"); break;
case '\r':
sb.Append("\\r"); break;
case '\t':
sb.Append("\\t"); break;
default:
sb.Append(cStr); break;
}
}
return sb.ToString();
}
C# Datatable、DataReader等转化json的更多相关文章
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)
点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...
- Asp.net常用开发方法之DataTable/DataReader转Json格式代码
public static string JsonParse(OleDbDataReader dataReader) //DataRead转json { StringBuilder jsonStrin ...
- C#中DataTable转化JSON
[WebMethod(Description = "将一个DataTable对象转化成JSON")] public string GetJSON() { JavaScriptSer ...
- 泛型集合、datatable常用数据类型转换Json帮助类
泛型集合.datatable常用数据类型转换Json帮助类 using System; using System.Data; using System.Configuration; using Sys ...
- Asp.net 将DataTable 或者DataSet 转换为Json 格式
Web 开发中,将从数据库中取到的数据直接转换为 Json 格式的数据,在前台通过Ajax 无刷新显示在界面上,下面提供将DataTable 或者DataSet 转换为Json 的方法 /// < ...
- DataTable ,XML和JSON相互转化
网上搜集的,保留下来了,有需要的拿去!private string DataTable2Xml(DataTable dt) { StringBuilder xmlBuilder = new Strin ...
- Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个
(function ($) { $.messageBox = function (message) { $.messager.show({ title:'消息框提示', msg:message, sh ...
- form表单转化json对象
利用 $.fn 可以让每一个jquery 对象都能直接使用这个方法. //form表单转化json对象$.fn.serializeObject = function () { var o = {}; ...
- DataTable序列化及反序列化Json
添加Json解析引用 using Newtonsoft.Json; 实现方式一:普通转换 private void button1_Click(object sender, EventArgs e) ...
随机推荐
- ssl 原理简介
要想弄明白SSL认证原理,首先要对CA有有所了解,它在SSL认证过程中有非常重要的作用.说白了,CA就是一个组织,专门为网络服务器颁发证书的,国际知名的CA机构有VeriSign.Symantec,国 ...
- Dynamic_Rankings(动态区间第k大)
ZOJ - 2112 \[ \ \] (那些说这道题是树状数组套主席树的人一定对主席树有误解!) 这里我们用树状数组套线段树来解决来写 首先 , 我们需要有n棵线段树(不是\(n^2\)空间,别慌) ...
- JavaScript初探系列(五)——this指向
一.涵义 this关键字是一个非常重要的语法点.毫不夸张地说,不理解它的含义,大部分开发任务都无法完成.this可以用在构造函数之中,表示实例对象.除此之外,this还可以用在别的场合.但不管是什么场 ...
- Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 解决办法(转)
使用yum update 更新的时候出现 “Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7” 这样的提示,去CentOS的官网:htt ...
- Xamarin.FormsShell基础教程(5)Shell项目内容新建页面
Xamarin.FormsShell基础教程(5)Shell项目内容新建页面 轻拍内容列表页面中的Add按钮后,进入内容新建页面,如图1.4和图1.5所示.在该页面中,用户可以设置新建内容的标题和具体 ...
- linux命令(55):环境变量:LIBRARY_PATH 和 LD_LIBRARY_PATH的区别
添加环境变量:https://www.cnblogs.com/lovychen/p/5583703.html PATH是可执行文件的环境变量. LIBRARY_PATH 和 LD_LIBRARY_PA ...
- Android Camera2/HAL3
Android : Camera2/HAL3 框架分析 https://www.cnblogs.com/blogs-of-lxl/p/10651611.html Android : Camera之ca ...
- Hadoop的三种调度器FIFO、Capacity Scheduler、Fair Scheduler(转载)
目前Hadoop有三种比较流行的资源调度器:FIFO .Capacity Scheduler.Fair Scheduler.目前Hadoop2.7默认使用的是Capacity Scheduler容量调 ...
- Difference Between Accuracy and Precision
What Is the Difference Between Accuracy and Precision? https://www.thoughtco.com/difference-between- ...
- fastreport 条形码 宽度问题
fastreport 的barcode 如果不设置AutoSize 确实可以控制宽度 但是生成后 基本没办法扫 所以换个思路 直接等比缩小 设置里面的zoom 比例为0.8 针对20位左右的条形码就 ...