`
java-mans
  • 浏览: 11431326 次
文章分类
社区版块
存档分类
最新评论

C#中任意类型数据转成JSON格式数据输出

 
阅读更多
Code:
  1. 01.///<summary>
  2. 02.///List转成json
  3. 03.///</summary>
  4. 04.///<typeparamname="T"></typeparam>
  5. 05.///<paramname="jsonName"></param>
  6. 06.///<paramname="list"></param>
  7. 07.///<returns></returns>
  8. 08.publicstaticstringListToJson<T>(IList<T>list,stringjsonName)
  9. 09.{
  10. 10.StringBuilderJson=newStringBuilder();
  11. 11.if(string.IsNullOrEmpty(jsonName))
  12. 12.jsonName=list[0].GetType().Name;
  13. 13.Json.Append("{/""+jsonName+"/":[");
  14. 14.if(list.Count>0)
  15. 15.{
  16. 16.for(inti=0;i<list.Count;i++)
  17. 17.{
  18. 18.Tobj=Activator.CreateInstance<T>();
  19. 19.PropertyInfo[]pi=obj.GetType().GetProperties();
  20. 20.Json.Append("{");
  21. 21.for(intj=0;j<pi.Length;j++)
  22. 22.{
  23. 23.Typetype=pi[j].GetValue(list[i],null).GetType();
  24. 24.Json.Append("/""+pi[j].Name.ToString()+"/":"+StringFormat(pi[j].GetValue(list[i],null).ToString(),type));
  25. 25.
  26. 26.if(j<pi.Length-1)
  27. 27.{
  28. 28.Json.Append(",");
  29. 29.}
  30. 30.}
  31. 31.Json.Append("}");
  32. 32.if(i<list.Count-1)
  33. 33.{
  34. 34.Json.Append(",");
  35. 35.}
  36. 36.}
  37. 37.}
  38. 38.Json.Append("]}");
  39. 39.returnJson.ToString();
  40. 40.}
  41. 41.
  42. 42.///<summary>
  43. 43.///List转成json
  44. 44.///</summary>
  45. 45.///<typeparamname="T"></typeparam>
  46. 46.///<paramname="list"></param>
  47. 47.///<returns></returns>
  48. 48.publicstaticstringListToJson<T>(IList<T>list)
  49. 49.{
  50. 50.objectobj=list[0];
  51. 51.returnListToJson<T>(list,obj.GetType().Name);
  52. 52.}
  53. 53.
  54. 54.///<summary>
  55. 55.///对象转换为Json字符串
  56. 56.///</summary>
  57. 57.///<paramname="jsonObject">对象</param>
  58. 58.///<returns>Json字符串</returns>
  59. 59.publicstaticstringToJson(objectjsonObject)
  60. 60.{
  61. 61.stringjsonString="{";
  62. 62.PropertyInfo[]propertyInfo=jsonObject.GetType().GetProperties();
  63. 63.for(inti=0;i<propertyInfo.Length;i++)
  64. 64.{
  65. 65.objectobjectValue=propertyInfo[i].GetGetMethod().Invoke(jsonObject,null);
  66. 66.stringvalue=string.Empty;
  67. 67.if(objectValueisDateTime||objectValueisGuid||objectValueisTimeSpan)
  68. 68.{
  69. 69.value="'"+objectValue.ToString()+"'";
  70. 70.}
  71. 71.elseif(objectValueisstring)
  72. 72.{
  73. 73.value="'"+ToJson(objectValue.ToString())+"'";
  74. 74.}
  75. 75.elseif(objectValueisIEnumerable)
  76. 76.{
  77. 77.value=ToJson((IEnumerable)objectValue);
  78. 78.}
  79. 79.else
  80. 80.{
  81. 81.value=ToJson(objectValue.ToString());
  82. 82.}
  83. 83.jsonString+="/""+ToJson(propertyInfo[i].Name)+"/":"+value+",";
  84. 84.}
  85. 85.jsonString.Remove(jsonString.Length-1,jsonString.Length);
  86. 86.returnjsonString+"}";
  87. 87.}
  88. 88.
  89. 89.///<summary>
  90. 90.///对象集合转换Json
  91. 91.///</summary>
  92. 92.///<paramname="array">集合对象</param>
  93. 93.///<returns>Json字符串</returns>
  94. 94.publicstaticstringToJson(IEnumerablearray)
  95. 95.{
  96. 96.stringjsonString="[";
  97. 97.foreach(objectiteminarray)
  98. 98.{
  99. 99.jsonString+=ToJson(item)+",";
  100. 100.}
  101. 101.jsonString.Remove(jsonString.Length-1,jsonString.Length);
  102. 102.returnjsonString+"]";
  103. 103.}
  104. 104.
  105. 105.///<summary>
  106. 106.///普通集合转换Json
  107. 107.///</summary>
  108. 108.///<paramname="array">集合对象</param>
  109. 109.///<returns>Json字符串</returns>
  110. 110.publicstaticstringToArrayString(IEnumerablearray)
  111. 111.{
  112. 112.stringjsonString="[";
  113. 113.foreach(objectiteminarray)
  114. 114.{
  115. 115.jsonString=ToJson(item.ToString())+",";
  116. 116.}
  117. 117.jsonString.Remove(jsonString.Length-1,jsonString.Length);
  118. 118.returnjsonString+"]";
  119. 119.}
  120. 120.
  121. 121.///<summary>
  122. 122.///Datatable转换为Json
  123. 123.///</summary>
  124. 124.///<paramname="table">Datatable对象</param>
  125. 125.///<returns>Json字符串</returns>
  126. 126.publicstaticstringToJson(DataTabledt)
  127. 127.{
  128. 128.StringBuilderjsonString=newStringBuilder();
  129. 129.jsonString.Append("[");
  130. 130.DataRowCollectiondrc=dt.Rows;
  131. 131.for(inti=0;i<drc.Count;i++)
  132. 132.{
  133. 133.jsonString.Append("{");
  134. 134.for(intj=0;j<dt.Columns.Count;j++)
  135. 135.{
  136. 136.stringstrKey=dt.Columns[j].ColumnName;
  137. 137.stringstrValue=drc[i][j].ToString();
  138. 138.Typetype=dt.Columns[j].DataType;
  139. 139.jsonString.Append("/""+strKey+"/":");
  140. 140.strValue=StringFormat(strValue,type);
  141. 141.if(j<dt.Columns.Count-1)
  142. 142.{
  143. 143.jsonString.Append(strValue+",");
  144. 144.}
  145. 145.else
  146. 146.{
  147. 147.jsonString.Append(strValue);
  148. 148.}
  149. 149.}
  150. 150.jsonString.Append("},");
  151. 151.}
  152. 152.jsonString.Remove(jsonString.Length-1,1);
  153. 153.jsonString.Append("]");
  154. 154.returnjsonString.ToString();
  155. 155.}
  156. 156.
  157. 157.///<summary>
  158. 158.///DataTable转成Json
  159. 159.///</summary>
  160. 160.///<paramname="jsonName"></param>
  161. 161.///<paramname="dt"></param>
  162. 162.///<returns></returns>
  163. 163.publicstaticstringToJson(DataTabledt,stringjsonName)
  164. 164.{
  165. 165.StringBuilderJson=newStringBuilder();
  166. 166.if(string.IsNullOrEmpty(jsonName))
  167. 167.jsonName=dt.TableName;
  168. 168.Json.Append("{/""+jsonName+"/":[");
  169. 169.if(dt.Rows.Count>0)
  170. 170.{
  171. 171.for(inti=0;i<dt.Rows.Count;i++)
  172. 172.{
  173. 173.Json.Append("{");
  174. 174.for(intj=0;j<dt.Columns.Count;j++)
  175. 175.{
  176. 176.Typetype=dt.Rows[i][j].GetType();
  177. 177.Json.Append("/""+dt.Columns[j].ColumnName.ToString()+"/":"+StringFormat(dt.Rows[i][j].ToString(),type));
  178. 178.if(j<dt.Columns.Count-1)
  179. 179.{
  180. 180.Json.Append(",");
  181. 181.}
  182. 182.}
  183. 183.Json.Append("}");
  184. 184.if(i<dt.Rows.Count-1)
  185. 185.{
  186. 186.Json.Append(",");
  187. 187.}
  188. 188.}
  189. 189.}
  190. 190.Json.Append("]}");
  191. 191.returnJson.ToString();
  192. 192.}
  193. 193.
  194. 194.///<summary>
  195. 195.///DataReader转换为Json
  196. 196.///</summary>
  197. 197.///<paramname="dataReader">DataReader对象</param>
  198. 198.///<returns>Json字符串</returns>
  199. 199.publicstaticstringToJson(DbDataReaderdataReader)
  200. 200.{
  201. 201.StringBuilderjsonString=newStringBuilder();
  202. 202.jsonString.Append("[");
  203. 203.while(dataReader.Read())
  204. 204.{
  205. 205.jsonString.Append("{");
  206. 206.for(inti=0;i<dataReader.FieldCount;i++)
  207. 207.{
  208. 208.Typetype=dataReader.GetFieldType(i);
  209. 209.stringstrKey=dataReader.GetName(i);
  210. 210.stringstrValue=dataReader[i].ToString();
  211. 211.jsonString.Append("/""+strKey+"/":");
  212. 212.strValue=StringFormat(strValue,type);
  213. 213.if(i<dataReader.FieldCount-1)
  214. 214.{
  215. 215.jsonString.Append(strValue+",");
  216. 216.}
  217. 217.else
  218. 218.{
  219. 219.jsonString.Append(strValue);
  220. 220.}
  221. 221.}
  222. 222.jsonString.Append("},");
  223. 223.}
  224. 224.dataReader.Close();
  225. 225.jsonString.Remove(jsonString.Length-1,1);
  226. 226.jsonString.Append("]");
  227. 227.returnjsonString.ToString();
  228. 228.}
  229. 229.
  230. 230.///<summary>
  231. 231.///DataSet转换为Json
  232. 232.///</summary>
  233. 233.///<paramname="dataSet">DataSet对象</param>
  234. 234.///<returns>Json字符串</returns>
  235. 235.publicstaticstringToJson(DataSetdataSet)
  236. 236.{
  237. 237.stringjsonString="{";
  238. 238.foreach(DataTabletableindataSet.Tables)
  239. 239.{
  240. 240.jsonString+="/""+table.TableName+"/":"+ToJson(table)+",";
  241. 241.}
  242. 242.jsonString=jsonString.TrimEnd(',');
  243. 243.returnjsonString+"}";
  244. 244.}
  245. 245.
  246. 246.///<summary>
  247. 247.///过滤特殊字符
  248. 248.///</summary>
  249. 249.///<paramname="s"></param>
  250. 250.///<returns></returns>
  251. 251.privatestaticstringString2Json(Strings)
  252. 252.{
  253. 253.StringBuildersb=newStringBuilder();
  254. 254.for(inti=0;i<s.Length;i++)
  255. 255.{
  256. 256.charc=s.ToCharArray()[i];
  257. 257.switch(c)
  258. 258.{
  259. 259.case'/"':
  260. 260.sb.Append("///"");break;
  261. 261.case'//':
  262. 262.sb.Append("////");break;
  263. 263.case'/':
  264. 264.sb.Append("///");break;
  265. 265.case'/b':
  266. 266.sb.Append("//b");break;
  267. 267.case'/f':
  268. 268.sb.Append("//f");break;
  269. 269.case'/n':
  270. 270.sb.Append("//n");break;
  271. 271.case'/r':
  272. 272.sb.Append("//r");break;
  273. 273.case'/t':
  274. 274.sb.Append("//t");break;
  275. 275.default:
  276. 276.sb.Append(c);break;
  277. 277.}
  278. 278.}
  279. 279.returnsb.ToString();
  280. 280.}
  281. 281.
  282. 282.///<summary>
  283. 283.///格式化字符型、日期型、布尔型
  284. 284.///</summary>
  285. 285.///<paramname="str"></param>
  286. 286.///<paramname="type"></param>
  287. 287.///<returns></returns>
  288. 288.privatestaticstringStringFormat(stringstr,Typetype)
  289. 289.{
  290. 290.if(type==typeof(string))
  291. 291.{
  292. 292.str=String2Json(str);
  293. 293.str="/""+str+"/"";
  294. 294.}
  295. 295.elseif(type==typeof(DateTime))
  296. 296.{
  297. 297.str="/""+str+"/"";
  298. 298.}
  299. 299.elseif(type==typeof(bool))
  300. 300.{
  301. 301.str=str.ToLower();
  302. 302.}
  303. 303.returnstr;
  304. 304.}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics