1         /// <summary>
2 /// IDataReader转换为Json
3 /// </summary>
4 /// <param name="dataReader">DataReader对象</param>
5 /// <returns>Json字符串</returns>
6 public static string ToJson(IDataReader dataReader)
7 {
8 try
9 {
10 StringBuilder jsonString = new StringBuilder();
11 jsonString.Append("[");
12
13 while (dataReader.Read())
14 {
15 jsonString.Append("{");
16 for (int i = 0; i < dataReader.FieldCount; i++)
17 {
18 Type type = dataReader.GetFieldType(i);
19 string strKey = dataReader.GetName(i);
20 string strValue = dataReader[i].ToString();
21 jsonString.Append("\"" + strKey + "\":");
22 strValue = StringFormat(strValue, type);
23 if (i < dataReader.FieldCount - 1)
24 {
25 jsonString.Append(strValue + ",");
26 }
27 else
28 {
29 jsonString.Append(strValue);
30 }
31 }
32 jsonString.Append("},");
33 }
34 if (!dataReader.IsClosed)
35 {
36 dataReader.Close();
37 }
38 jsonString.Remove(jsonString.Length - 1, 1);
39 jsonString.Append("]");
40 if (jsonString.Length == 1)
41 {
42 return "[]";
43 }
44 return jsonString.ToString();
45 }
46 catch (Exception ex)
47 {
48 throw ex;
49 }
50 }
51 /// <summary>
52 /// 格式化字符型、日期型、布尔型
53 /// </summary>
54 /// <param name="str"></param>
55 /// <param name="type"></param>
56 /// <returns></returns>
57 private static string StringFormat(string str, Type type)
58 {
59 if (type != typeof(string) && string.IsNullOrEmpty(str))
60 {
61 str = "\"" + str + "\"";
62 }
63 else if (type == typeof(string))
64 {
65 str = String2Json(str);
66 str = "\"" + str + "\"";
67 }
68 else if (type == typeof(DateTime))
69 {
70 str = "\"" + str + "\"";
71 }
72 else if (type == typeof(bool))
73 {
74 str = str.ToLower();
75 }
76 else if (type == typeof(byte[]))
77 {
78 str = "\"" + str + "\"";
79 }
80 else if (type == typeof(Guid))
81 {
82 str = "\"" + str + "\"";
83 }
84 return str;
85 }
86 /// <summary>
87 /// 过滤特殊字符
88 /// </summary>
89 /// <param name="s"></param>
90 /// <returns></returns>
91 public static string String2Json(String s)
92 {
93 StringBuilder sb = new StringBuilder();
94 for (int i = 0; i < s.Length; i++)
95 {
96 char c = s.ToCharArray()[i];
97 switch (c)
98 {
99 case '\"':
100 sb.Append("\\\""); break;
101 case '\\':
102 sb.Append("\\\\"); break;
103 case '/':
104 sb.Append("\\/"); break;
105 case '\b':
106 sb.Append("\\b"); break;
107 case '\f':
108 sb.Append("\\f"); break;
109 case '\n':
110 sb.Append("\\n"); break;
111 case '\r':
112 sb.Append("\\r"); break;
113 case '\t':
114 sb.Append("\\t"); break;
115 case '\v':
116 sb.Append("\\v"); break;
117 case '\0':
118 sb.Append("\\0"); break;
119 default:
120 sb.Append(c); break;
121 }
122 }
123 return sb.ToString();
124 }

C# IDataReader转换为Json的更多相关文章

  1. js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象

    /** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...

  2. 数据集转换为Json

    数据集转换为Json 第一步:新建一个类对象  通常我会写三个属性:状态.返回信息.数据集 第二步:新建一个JSON转换类 第三步:把类对象当做参数传入JSON转换类 ———————————————— ...

  3. JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  4. 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

  5. js 将json字符串转换为json对象的方法解析

    推荐: var obj = eval('(' + str + ')'); var last=JSON.stringify(obj); //将JSON对象转化为string字符 例如: JSON字符串: ...

  6. javaScript 将json字符串转换为json对象的方法解析

    JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...

  7. json字符串的拼接,并转换为json对象

    <html> <head> <script> var qianzhui = "cc"; var test1=""; func ...

  8. c#常用的Datable转换为json,以及json转换为DataTable操作方法

    #region  DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...

  9. C#中把Datatable转换为Json的5个代码实例

    一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table" ...

  10. 数据转换为json格式的方法

    数据转换为json格式: 如果一张表中存在主外键关系,模板自动生成的类是不可以转换成JSON格式的,此时需要重新写一个类,类前面需加[DataContract],字段前需加[DataMember],实 ...

随机推荐

  1. 【JavaScript】setAttribute在添加事件时失效解决办法

    HTML的表格行高亮,用JavaScript设置时总是在FireFox和谷歌浏览器中成功,但是在IE6,IE7中失败.最后发现是IE系列对DOM的setAttribute方法支持不好.如用: 1 tr ...

  2. sql server 与mysql差异(innodb)

    MySQL SQL SERVER CHAR_LENGTH(str) LEN(character_expression) CONCAT(str1,str2,...) str1+str2 INSERT(s ...

  3. CSS3 box-shadow盒子阴影

    inset | offset-x | offset-y | blur-radius | spread-radius | color 阴影在边框内 x轴 y轴 模糊半径 扩散半径 阴影颜色 inset: ...

  4. vue 祖孙传值

  5. [NepCTF2022]中学数学

    中学数学 p.q挣扎很久没分解出来,wp出来了赶紧复现试试. 题目 from gmpy2 import * from Crypto.Util.number import * from secret i ...

  6. vue项目前台带表格的页面,让表格根据屏幕大小自适应高度,小屏幕时不出现多个滚动条

    参见馆藏库房系统, 右侧整体结构一般如下 <el-container class="ml10 mr10 br7 bgw"> <el-main> // el- ...

  7. Python生成whl文件

    下载源码包,生成whl文件 python setup.py bdist_wheel

  8. (面试加分新技能) 总结11个ES2022中你可能遗漏的语法

    与许多其他编程语言一样,JavaScript 也在不断发展,每年,该语言都会通过新功能变得更强大,让开发人员编写更具表现力和简洁的代码.让我们探索 ECMAScript 2022 (ES13) 中添加 ...

  9. maven-标准目录结构,常用命令,生命周期,概念模型图

    maven-标准目录结构 作为一个maven工程,它的src目录和pom.xml是必备的,进入src目录后,我们发现它里面的目录结构如下:  src/main/java -- 存放项目的 . java ...

  10. Django 之 Form

    forms组件 1. 校验字段功能 针对一个实例:注册用户讲解. 模型:models.py class UserInfo(models.Model): name=models.CharField(ma ...