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. 学习Anaconda,jupyter notebook

    20200210,理解了jupyter在anaconda中的意义,vs code觉得对我这个初学者来讲,更容易使用,pycharm虽然破解安装了,但是感觉不太好用,随后再说 20200211, jup ...

  2. ComPiler200002:Growing a Compiler

    http://www.cs.dartmouth.edu/~mckeeman/cs48/mxcom/gem/html/GrowingCompiler.html by Bill McKeeman and ...

  3. 删除File Explorer、This PC、Folders

    win+R,输入regedit,打开Registry Editor 定位:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentV ...

  4. abc285h题解

    考虑容斥,强制要求\(k\)个数为完全平方数,系数为\((-1)^k*C_n^k\)(因为我们要从\(n\)个数选出\(k\)个数作为完全平方数).则在唯一分解\(p_1^{e_1}...p_n^{e ...

  5. Python中的容器、迭代器、生成器

    容器是一系列元素的集合,str.list.set.dict.file.sockets对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象. 可迭代对象实现 ...

  6. python的global用法

    在python中,我们在函数外定义了一个变量,如果我们想在函数内对这个变量进行操作,就需要在函数内部将这个变量声明为global. 例1 x = 1 def func(): x = 2 func() ...

  7. sql-SQL Prompt

    本人用的是win10系统,这里也着重介绍win10系统的激活方式 激活方式: 1.首先系统HOSTS文件添加以下屏蔽网络 127.0.0.1 red-gate.com 127.0.0.1 www.re ...

  8. docker-compose之memcached

    新建docker-compose.yml,写入以下内容 memcached: image: memcached:latest ports: - 11211:11211 启动服务 docker-comp ...

  9. 转—记录一下获取NC程序名称的方法

    案例源代码如下: #include <uf_obj.h> #include <uf_setup.h> #include <uf_ncgroup.h> static ...

  10. 【2020NOI.AC省选模拟#5】C. 光滑序列

    题目链接 原题解: 光滑的序列一定有长度为$K$的循环节. 使用动态规划,设$F(i,j)$为使前$i$个整数的和为$j$的最小修改次数. 记$cost(i,v)$为令$A_i,A_{i+K},A_{ ...