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],实 ...
随机推荐
- SQL应用系列
载自:https://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html
- PostProcess
后处理器: AutowiredAnnotationBeanPostProcess.class 可以处理@Autowired.@Value 如何注册:context.registerBean(xxx.c ...
- Expected indentation of 2 spaces but found 4
预期缩进2个空格,但发现4个 把缩进空格修改后如图
- 使用vue的插槽理解
使用插槽的时候其实就是引用子组件,在引用的组件中间写上你要的代码,然后在子组件的的<slot ></slot>中就包含父组件写下的代码. 父组件 import addshop ...
- 【SQL Server】列名首字母大写
使用UPPER 和 LOWWER函数组合首字母大写.例如: 1 SELECT user_id,(UPPER(LEFT(name,1) ) + RIGHT(name , LEN(name) -1) )A ...
- spreadJs导入、Java保存到数据库
下载并引用spreadJs 定义全局变量,初始化表格控件 var $this = this;this.spread_obj; $this.spread_obj = new GC.Spread.Shee ...
- Windows使用cmd命令查看当前用户名
https://blog.csdn.net/qq_46068659/article/details/106037024 查看用户: net user 查看当前用户: whoami
- noi 1.1 6 空格分隔输出
描述 读入一个字符,一个整数,一个单精度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔.输出浮点数时保留6位小数. 输入 共有四行:第一行是一个字符:第二行是一个整数: ...
- idea常用快捷键记录
实用编写代码辅助快捷键 Ctrl+Alt+V 提出选中内容为局部变量 Ctrl+Backspace 按单词删除 Ctrl+D 复制行 Ctrl+Y 删除当前行 Ctr+Shift+U 大小写转化 Sh ...
- FFT简单概述
概念 快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效.快速计算方法的统称,简称FFT.快速傅里叶变换是1965年由J.W.库利和T. ...