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) ...
随机推荐
- nginx 访问控制之 限速
nginx限速可以通过 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块来实现限速的功能. 一.ngx_http_limit_conn ...
- 【jmeter】Include Controller控件&Test Fragment的使用
概念:简单说下Include Controller引用Test Fragment片段 Include Controller控件——给当前jmeter脚本引入外部片段的jmeter脚本(Test Fra ...
- bzoj 3585 mex - 线段树 - 分块 - 莫队算法
Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三行开始,每行一个询问 ...
- UDS的使用
我们通过对导热微分方程式的求解,并与Fluent自己的求解结果进行对比,介绍一下Fluent当中UDS(自定义标量)的具体使用方法. 首先Fluent当中的UDS主要针对下面这样形式的方程: 其中: ...
- docker 镜像制作
# wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh# bash A ...
- ios 报错 Invalid row height provided by table delegate. Value must be at least 0.0, or UITableViewAutomaticDi......
Invalid row height provided by table delegate. Value must be at least 0.0, or UITableViewAutomaticDi ...
- jQuery 取值操作
模板使用: https://startbootstrap.com/themes/sb-admin-2/ 使用的 bootstrap 模块 ,上面的这个网站可以下载 select 取值 <sele ...
- Java13新特性 -- ZGC:取消使用未使用的内存
在JDK 11中,Java引入了ZGC,这是一款可伸缩的低延迟垃圾收集器,但是当时只是实验性的.号称不管你开了多大的堆内存,它都能保证在 10 毫秒内释放 JVM ,不让它停顿在那.但是,当时的设计是 ...
- 2019 GDD TensorFlow
https://www.tensorflow.org/ https://tensorflow.google.cn/ (中文站点) 现场PPT照片: https://pan.baidu.c ...
- Cassandra开发入门文档第二部分(timeuuid类型、复合主键、静态字段详解)
timeuuid类型 timeuuid具有唯一索引和日期时间的综合特性,可以与日期和时间函数联合使用,常用的关联函数: dateOf() now() minTimeuuid() and maxTime ...