1. //对象转换为Json字符串
  2. public static string ToJson(object jsonObject)
  3. {
  4. object objectValue = string.Empty;
  5. string jsonString = "{";
  6. if (jsonObject==null)
  7. {
  8. return jsonString + "}";
  9. }
  10. PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
  11. for (int i = 0; i < propertyInfo.Length; i++)
  12. {
  13. try
  14. {
  15. objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, BindingFlags.InvokeMethod, null, new object[] { }, null);
  16. string value = string.Empty;
  17. if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)
  18. {
  19. value = "'" + objectValue.ToString() + "'";
  20. }
  21. else if (objectValue is string)
  22. {
  23. value = "'" + ToJson(objectValue.ToString()) + "'";
  24. }
  25. else if (objectValue is IEnumerable)
  26. {
  27. value = ToJson((IEnumerable)objectValue);
  28. }
  29. else
  30. {
  31. value = ToJson(objectValue.ToString());
  32. }
  33. jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ",";
  34. }
  35. catch (Exception ex)
  36. {
  37. string s = ex.Message;
  38. }
  39. }
  40. jsonString.Remove(jsonString.Length - 1);
  41. return jsonString + "}";
  42. }
  43.  
  44. //对象集合转换Json
  45. public static string ToJson(IEnumerable array)
  46. {
  47. if (array == null) return "";
  48. string jsonString = "[";
  49. foreach (object item in array)
  50. {
  51. jsonString+= ToJson(item) + ",";
  52. }
  53. jsonString.Remove(jsonString.Length - 1);
  54. return jsonString + "]";
  55. }
  56. //普通集合转换Json
  57. public static string ToArrayString(IEnumerable array)
  58. {
  59. if (array == null) return "";
  60. string jsonString = "[";
  61. foreach (object item in array)
  62. {
  63. jsonString = ToJson(item.ToString()) + ",";
  64. }
  65. jsonString.Remove(jsonString.Length - 1, jsonString.Length);
  66. return jsonString + "]";
  67. }
  68. //Datatable转换为Json
  69. public static string ToJson(DataTable dt)
  70. {
  71. if (dt == null || dt.Rows.Count == 0) return "[{}]";
  72. StringBuilder jsonString = new StringBuilder();
  73.  
  74. jsonString.Append("[");
  75. DataRowCollection drc = dt.Rows;
  76. for (int i = 0; i < drc.Count; i++)
  77. {
  78. jsonString.Append("{");
  79. for (int j = 0; j < dt.Columns.Count; j++)
  80. {
  81. string strKey = dt.Columns[j].ColumnName;
  82. string strValue = drc[i][j].ToString();
  83. Type type = dt.Columns[j].DataType;
  84. jsonString.Append("\"" + strKey + "\":");
  85. strValue = StringFormat(strValue, type);
  86. if(j<dt.Columns.Count-1)
  87. jsonString.Append(strValue + ",");
  88. else
  89. jsonString.Append(strValue);
  90. }
  91. jsonString.Append("},");
  92. }
  93. jsonString.Remove(jsonString.Length - 1, 1);
  94. jsonString.Append("]");
  95. return jsonString.ToString();
  96. }
  97. //DataTable转成Json
  98. public static string ToJson(DataTable dt, string jsonName)
  99. {
  100. if(string.IsNullOrEmpty(jsonName))
  101. jsonName = dt.TableName;
  102. StringBuilder sb = new StringBuilder();
  103. sb.Append("{\"" + jsonName + "\":[");
  104. if (dt.Rows.Count > 0)
  105. {
  106. for (int i = 0; i < dt.Rows.Count; i++)
  107. {
  108. sb.Append("{");
  109. for (int j = 0; j < dt.Columns.Count; j++)
  110. {
  111. Type type = dt.Rows[i][j].GetType();
  112. sb.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));
  113. if (j < dt.Columns.Count - 1)
  114. {
  115. sb.Append(",");
  116. }
  117. }
  118. sb.Append("}");
  119. if (i < dt.Rows.Count - 1)
  120. {
  121. sb.Append(",");
  122. }
  123. }
  124. }
  125. sb.Append("]}");
  126. return sb.ToString();
  127. }
  128.  
  129. //DataReader转换为Json
  130. public static string ToJson(DbDataReader dataReader)
  131. {
  132. StringBuilder jsonString = new StringBuilder();
  133. jsonString.Append("[");
  134. while (dataReader.Read())
  135. {
  136. jsonString.Append("{");
  137. for (int i = 0; i < dataReader.FieldCount; i++)
  138. {
  139. Type type = dataReader.GetFieldType(i);
  140. string strKey = dataReader.GetName(i);
  141. string strValue = dataReader[i].ToString();
  142. jsonString.Append("\"" + strKey + "\":");
  143. strValue = StringFormat(strValue, type);
  144. if (i < dataReader.FieldCount - 1)
  145. {
  146. jsonString.Append(strValue + ",");
  147. }
  148. else
  149. {
  150. jsonString.Append(strValue);
  151. }
  152. }
  153. jsonString.Append("},");
  154. }
  155. dataReader.Close();
  156. jsonString.Remove(jsonString.Length - 1, 1);
  157. jsonString.Append("]");
  158. return jsonString.ToString();
  159. }
  160.  
  161. //DataSet转换为Json
  162. public static string ToJson(DataSet dataSet)
  163. {
  164. string jsonString = "{";
  165. foreach (DataTable table in dataSet.Tables)
  166. {
  167. jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ",";
  168. }
  169. jsonString = jsonString.TrimEnd(',');
  170. return jsonString + "}";
  171. }
  172. //ArrayList转化为json
  173. public static string ArryListToJson(ArrayList alist, string jsonName)
  174. {
  175. string json = string.Empty;
  176. string strSubList = "\"" + jsonName + "\":" + "[{";
  177. for (int i = 0; i < alist.Count; i++)
  178. {
  179. Hashtable ht1 = (Hashtable)alist[i];
  180. foreach (DictionaryEntry de in ht1)
  181. {
  182. if (de.Value is ArrayList)
  183. {
  184. strSubList += ArryListToJson((ArrayList)de.Value, de.Key.ToString());
  185. strSubList += "]";
  186. }
  187. else
  188. {
  189. strSubList += "\"" + de.Key + "\":" + "\"" + de.Value + "\",";
  190. }
  191. }
  192. strSubList = strSubList.Remove(strSubList.Length - 1);
  193. strSubList += "},{";
  194. }
  195. if (strSubList.Length >= 2)
  196. {
  197. json = strSubList.Remove(strSubList.Length - 2);
  198. }
  199. json += "]";
  200. return json;
  201. }
  202. //Hashtable To Json
  203. public static string HashtableToJson(Hashtable hr)
  204. {
  205. string json = "{";
  206. foreach (DictionaryEntry row in hr)
  207. {
  208. try
  209. {
  210. string key = "\"" + row.Key + "\":";
  211. string value = string.Empty;
  212.  
  213. if (row.Value is ArrayList)
  214. {
  215. key = string.Empty;
  216. value = ArryListToJson((ArrayList)row.Value, row.Key.ToString());
  217. value += ",";
  218. }
  219. else
  220. {
  221. value = "\"" + (row.Value == null ? "" : row.Value.ToString()) + "\",";
  222. }
  223. json += key + value;
  224. }
  225. catch (Exception ex)
  226. {
  227. string mess = ex.Message;
  228. }
  229. }
  230. json = json.Remove(json.Length - 1);
  231. json = json + "}";
  232. return json;
  233. }
  234. //转换字符格式
  235. private static string StringFormat(string str, Type type)
  236. {
  237. if (string.IsNullOrEmpty(str)) return "\"\"";
  238. if (type == typeof(string))
  239. {
  240. str = "\"" + ConvertStrToSpecificationStrs(str) + "\"";
  241. }
  242. else if (type == typeof(DateTime))
  243. {
  244. str = "\"" + str + "\"";
  245. }
  246. else if (type == typeof(bool))
  247. {
  248. str = str.ToLower();
  249. }
  250. return str;
  251. }
  252. //转换字符格式
  253. public static string ConvertStrToSpecificationStrs(string str)
  254. {
  255. if (string.IsNullOrEmpty(str)) return "";
  256. StringBuilder sb = new StringBuilder();
  257. for (int i = 0; i < str.Length; i++)
  258. {
  259. char cStr = str.ToCharArray()[i];
  260.  
  261. switch (cStr)
  262. {
  263. case '\"':
  264. sb.Append("\\\""); break;
  265. case '\\':
  266. sb.Append("\\\\"); break;
  267. case '/':
  268. sb.Append("\\/"); break;
  269. case '\b':
  270. sb.Append("\\b"); break;
  271. case '\f':
  272. sb.Append("\\f"); break;
  273. case '\n':
  274. sb.Append("\\n"); break;
  275. case '\r':
  276. sb.Append("\\r"); break;
  277. case '\t':
  278. sb.Append("\\t"); break;
  279. default:
  280. sb.Append(cStr); break;
  281. }
  282. }
  283. return sb.ToString();
  284. }

  

C# Datatable、DataReader等转化json的更多相关文章

  1. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)

    点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...

  2. Asp.net常用开发方法之DataTable/DataReader转Json格式代码

    public static string JsonParse(OleDbDataReader dataReader) //DataRead转json { StringBuilder jsonStrin ...

  3. C#中DataTable转化JSON

    [WebMethod(Description = "将一个DataTable对象转化成JSON")] public string GetJSON() { JavaScriptSer ...

  4. 泛型集合、datatable常用数据类型转换Json帮助类

    泛型集合.datatable常用数据类型转换Json帮助类 using System; using System.Data; using System.Configuration; using Sys ...

  5. Asp.net 将DataTable 或者DataSet 转换为Json 格式

    Web 开发中,将从数据库中取到的数据直接转换为 Json 格式的数据,在前台通过Ajax 无刷新显示在界面上,下面提供将DataTable 或者DataSet 转换为Json 的方法 /// < ...

  6. DataTable ,XML和JSON相互转化

    网上搜集的,保留下来了,有需要的拿去!private string DataTable2Xml(DataTable dt) { StringBuilder xmlBuilder = new Strin ...

  7. Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个

    (function ($) { $.messageBox = function (message) { $.messager.show({ title:'消息框提示', msg:message, sh ...

  8. form表单转化json对象

    利用 $.fn 可以让每一个jquery 对象都能直接使用这个方法. //form表单转化json对象$.fn.serializeObject = function () { var o = {}; ...

  9. DataTable序列化及反序列化Json

    添加Json解析引用 using Newtonsoft.Json; 实现方式一:普通转换 private void button1_Click(object sender, EventArgs e) ...

随机推荐

  1. 在itop4412移植linux4.14和设备树遇到的问题及解决

    Linux4.14的设备树下已经对itop4412做了支持,本来应该很容易进行移植,可是在使用讯为给的资料中,对exynos4412-itop-scp-core.dtsi中原本的代码全部进行了注释,并 ...

  2. SpringBoot:使用Jenkins自动部署SpringBoot项目(二)具体配置

    1.启动Jenkins 在浏览器输入ip:port后,进入Jenkins初始化界面,需要查看文件,得到密码. 输入密码进入初始化界面,选择推荐插件安装. 安装完成创建账号,进入Jenkins主界面. ...

  3. Nginx目录文件列表显示

    项目中使用了tomcat,Nginx,测试阶段,生产阶段经常会有些bug需要调查.需要有些日志管理工具,在没有ELK的情况下,可以通过配置nginx来实现基本的日常查看.不需要登录到Linux服务器上 ...

  4. hotspot的内存

    java memory主要分heap memory 和 non-heap memory,其计算公式如下: Max memory = [-Xmx] + [-XX:MaxPermSize] + numbe ...

  5. 在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据

    在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持   Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Jso ...

  6. mybatis自定义之优先从classes目录加载,加载之后遇到相同的类定义时不再加载

    如果mybatis中包含了两个相同定义的mapper,启动时出现下列异常: Caused by: java.lang.IllegalArgumentException: Result Maps col ...

  7. regexp_replace

    pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&sha ...

  8. 【C++】C++中的lambda表达式和函数对象

    目录结构: contents structure [-] lambda表达式 lambda c++14新特性 lambda捕捉表达式 泛型lambda表达式 函数对象 函数适配器 绑定器(binder ...

  9. ES6 - 数组扩展(扩展运算符)

    扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算(函数),将一个数组转为用逗号分隔的参数序列. rest: 变量将多余的参数放入数组中. spread(扩展): ...

  10. 在centos7上用docker安装宝塔面板

    在centos7上用docker安装宝塔面板   1. [root@web01 ~]# systemctl enable docker 2. [root@web01 ~]# docker pull c ...