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) ...
随机推荐
- 在itop4412移植linux4.14和设备树遇到的问题及解决
Linux4.14的设备树下已经对itop4412做了支持,本来应该很容易进行移植,可是在使用讯为给的资料中,对exynos4412-itop-scp-core.dtsi中原本的代码全部进行了注释,并 ...
- SpringBoot:使用Jenkins自动部署SpringBoot项目(二)具体配置
1.启动Jenkins 在浏览器输入ip:port后,进入Jenkins初始化界面,需要查看文件,得到密码. 输入密码进入初始化界面,选择推荐插件安装. 安装完成创建账号,进入Jenkins主界面. ...
- Nginx目录文件列表显示
项目中使用了tomcat,Nginx,测试阶段,生产阶段经常会有些bug需要调查.需要有些日志管理工具,在没有ELK的情况下,可以通过配置nginx来实现基本的日常查看.不需要登录到Linux服务器上 ...
- hotspot的内存
java memory主要分heap memory 和 non-heap memory,其计算公式如下: Max memory = [-Xmx] + [-XX:MaxPermSize] + numbe ...
- 在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据
在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持 Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Jso ...
- mybatis自定义之优先从classes目录加载,加载之后遇到相同的类定义时不再加载
如果mybatis中包含了两个相同定义的mapper,启动时出现下列异常: Caused by: java.lang.IllegalArgumentException: Result Maps col ...
- regexp_replace
pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&sha ...
- 【C++】C++中的lambda表达式和函数对象
目录结构: contents structure [-] lambda表达式 lambda c++14新特性 lambda捕捉表达式 泛型lambda表达式 函数对象 函数适配器 绑定器(binder ...
- ES6 - 数组扩展(扩展运算符)
扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算(函数),将一个数组转为用逗号分隔的参数序列. rest: 变量将多余的参数放入数组中. spread(扩展): ...
- 在centos7上用docker安装宝塔面板
在centos7上用docker安装宝塔面板 1. [root@web01 ~]# systemctl enable docker 2. [root@web01 ~]# docker pull c ...