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. linux 下用其他用户来执行命令

    sudo su - username -l -c "supervisorctl restart apps" -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环 ...

  2. PyMySQL查询

    title: PyMySQL查询 author: 杨晓东 permalink: PyMySQL查询 date: 2021-10-02 11:27:04 categories: - 投篮 tags: - ...

  3. CF1067E 题解

    题意 传送门 给定一棵 \(n\) 个节点的树,每条边有 \(\frac{1}{2}\) 的概率出现,可以得到一个森林,求这个森林邻接矩阵的秩的期望. \(1\le n\le5\times10^5\) ...

  4. React 事件绑定this指向

    1. 推荐:使用class的实例方法 class Hello extends React.Component { handleClick = () => { this.setState({ .. ...

  5. WDA学习(25):DateNavigator使用

    1.18 UI Element:Date Navigator使用 本实例测试创建Date Navigator; 1.创建Component,View: V_DATE_NAVIGATOR; 2.创建Co ...

  6. 使用骨架创建maven的web工程 maven工程servlet实例之间指定web资源包 实例之导入项目依赖的jar包 maven工程servlet实例之jar包冲突解决

     使用骨架创建maven的web工程 操作一样把勾进行勾选找到webapp选项 下一步创建就行 创建好会有显示 目录结构其余的都需要自己手动补齐 有小蓝点的才是一个web项目, 如果上面都正确的话没有 ...

  7. zookeeper设置开机自启

    开机自启:(1)编辑zookeeper.service文件 vim /usr/lib/systemd/system/zookeeper.service 加入如下内容复制代码[Unit]Descript ...

  8. redux-thunk初步使用

    redux中间件,用来处理异步action 返回 一个函数  内部函数接收存储方法dispatch和getState参数 demo: import { GET_ONLINE_STATUS, SET_O ...

  9. 通过cmd对数据库SQL进行创建表空间并创建用户

    通过cmd对数据库SQL进行创建表空间并创建用户 1.创建表空间:create tablespace stx(名字) datafile ' 目录路径\stx(名字).dbf ' size 64m; 2 ...

  10. Dapper显示

    <h2>商品列表</h2> <a id="a">导出列表</a> <table class="table table ...