C# IDataReader转换为Json
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的更多相关文章
- js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象
/** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...
- 数据集转换为Json
数据集转换为Json 第一步:新建一个类对象 通常我会写三个属性:状态.返回信息.数据集 第二步:新建一个JSON转换类 第三步:把类对象当做参数传入JSON转换类 ———————————————— ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- js 将json字符串转换为json对象的方法解析
推荐: var obj = eval('(' + str + ')'); var last=JSON.stringify(obj); //将JSON对象转化为string字符 例如: JSON字符串: ...
- javaScript 将json字符串转换为json对象的方法解析
JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...
- json字符串的拼接,并转换为json对象
<html> <head> <script> var qianzhui = "cc"; var test1=""; func ...
- c#常用的Datable转换为json,以及json转换为DataTable操作方法
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- C#中把Datatable转换为Json的5个代码实例
一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table" ...
- 数据转换为json格式的方法
数据转换为json格式: 如果一张表中存在主外键关系,模板自动生成的类是不可以转换成JSON格式的,此时需要重新写一个类,类前面需加[DataContract],字段前需加[DataMember],实 ...
随机推荐
- ISTQB软件测试初级认证模拟题
参考地址 http://www.docin.com/p-297467364.html 第一章:软件测试基础(18%) 1.学习目标 1.1 为什么需要软件测试? (K2) ① 通过具体的例子,来描述软 ...
- Xcode基础文件概念
Xcode基础概念 Schema.Target.Project 和 Workspace 是组成一个 Xcode 工程最核心的单元,也是我们首先需要理解的部分. Target Target 是我们工程中 ...
- vant-ui经验
1.van-checkbox搭配van-cell使用,点击圆圈区域,不触发定义的click函数. 解决:给van-checkbox添加一层div,添加click事件:van-checkbox也添加cl ...
- nginx调试和location用法,匹配url
1.nginx调试输出内容到页面 location = /demo { charset utf-8; default_type text/html; return 500 "服务正在升级,请 ...
- java中的批量导入,批量更新数据
批量插入 数据,提高效率 Dao层 int insertBatch(List<HealthImport> list); xml文件 <insert id="insertBa ...
- 肖sir__面试第十天课程__模拟面试讲解
一.面对面模拟面试1.打印好简历2.带好手机,录制自己回答的问题,总结,反思(内部),关闭手机和闹钟(外部)3.有笔试题,可以拍照发群里4.可以携带耳塞(适合女生)5.语速流程6.礼貌用语(面试官好, ...
- 5G工业网关在智能工厂的应用案例
智能工厂是5G技术的重要应用场景之一.利用5G网络将生产设备无缝连接,并进一步打通设计.采购.仓储.物流等环节,使生产更加扁平化.定制化.智能化,从而构造一个面向未来的智能制造网络. 5G 作为最优的 ...
- noi 1.5 36 计算多项式的值
描述 假定多项式的形式为xn+xn-1+-+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入 输入仅一行,包括x和n,用单个空格隔开.x在float范围内,n < ...
- STM32中断调试中遇到的问题
STM32应用过程中遇到的问题 实现功能: 1.自动流水灯:在LED1~LED4上实现自动流水灯,流水间隔时间为200ms/bit,然后通过按键KEY1改变流水灯的速度,每次按键间隔时间增加200ms ...
- jmeter支持发送https请求
示例网址: https://passport.damai.cn/login 一.Jmeter如何导入SSL证书 步骤1.打开Chrome浏览器访问地址,点击安全锁,导出证书,并复制文件至指定文件目录. ...