将 DataTable 或 String 数据转化为json(.NET)

简介: 直接贴代码:   1 using System; 2 using System.Data; 3 using System.Text; 4 using System.Collections.

直接贴代码:

 

  1 using System;
  2 using System.Data;
  3 using System.Text;
  4 using System.Collections.Generic;
  5 using System.Reflection;
  6 
  7 namespace PowerCheck.Tools
  8 {
  9 
 10     public class ToJson
 11     {
 12         public ToJson()
 13         {
 14 
 15         }
 16         public static string DataTableToJson(string jsonName, DataTable dt)
 17         {
 18             StringBuilder Json = new StringBuilder();
 19             Json.Append("{\"" + jsonName + "\":[");
 20             if (dt.Rows.Count > 0)
 21             {
 22                 for (int i = 0; i < dt.Rows.Count; i++)
 23                 {
 24                     Json.Append("{");
 25                     for (int j = 0; j < dt.Columns.Count; j++)
 26                     {
 27                         StringBuilder sb = new StringBuilder();
 28                         escape(dt.Rows[i][j].ToString(),sb);
 29 
 30                         Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + sb.ToString() + "\"");
 31                         if (j < dt.Columns.Count - 1)
 32                         {
 33                             Json.Append(",");
 34                         }
 35                     }
 36                     Json.Append("}");
 37                     if (i < dt.Rows.Count - 1)
 38                     {
 39                         Json.Append(",");
 40                     }
 41                 }
 42             }
 43             Json.Append("]}");
 44             return Json.ToString();
 45         }
 46 
 47         /// <summary>
 48         /// 将string数组转换成json字符串
 49         /// </summary>
 50         /// <param name="TagStrings">json对象数组名称</param>
 51         /// <param name="Strings">json对象数组值</param>
 52         /// <returns></returns>
 53         public static string StringArrayToJason(string[] TagStrings, string[] Strings)
 54         {
 55             StringBuilder Json = new StringBuilder();
 56             Json.Append("{");
 57             for (int i = 0; i < Strings.Length; i++)
 58             {
 59                 Json.Append(TagStrings[i]);
 60                 Json.Append(":");
 61                 Json.Append(Strings[i]);
 62                 if (i < Strings.Length - 1)
 63                 {
 64                     Json.Append(",");
 65                 }
 66             }
 67             Json.Append("}");
 68             return Json.ToString();
 69         }
 70 
 71         public static string ObjectToJson<T>(string jsonName, IList<T> IL)
 72         {
 73             StringBuilder Json = new StringBuilder();
 74             Json.Append("{\"" + jsonName + "\":[");
 75             if (IL.Count > 0)
 76             {
 77                 for (int i = 0; i < IL.Count; i++)
 78                 {
 79                     T obj = Activator.CreateInstance<T>();
 80                     Type type = obj.GetType();
 81                     PropertyInfo[] pis = type.GetProperties();
 82                     Json.Append("{");
 83                     for (int j = 0; j < pis.Length; j++)
 84                     {
 85                         Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\"");
 86                         if (j < pis.Length - 1)
 87                         {
 88                             Json.Append(",");
 89                         }
 90                     }
 91                     Json.Append("}");
 92                     if (i < IL.Count - 1)
 93                     {
 94                         Json.Append(",");
 95                     }
 96                 }
 97             }
 98             Json.Append("]}");
 99             return Json.ToString();
100         }
101 
102 
103         public static void escape(string s, StringBuilder sb)
104         {
105 
106             for (int i = 0; i < s.Length; i++)
107             {
108                 char ch = s[i];
109 
110                 switch (ch)
111                 {
112 
113                     case '"':
114                         sb.Append("\\\"");
115                         break;
116 
117                     case '\\':
118 
119                         sb.Append("\\\\");
120 
121                         break;
122 
123                     case '\b':
124 
125                         sb.Append("\\b");
126 
127                         break;
128 
129                     case '\f':
130 
131                         sb.Append("\\f");
132 
133                         break;
134 
135                     case '\n':
136 
137                         sb.Append("\\n");
138 
139                         break;
140 
141                     case '\r':
142 
143                         sb.Append("\\r");
144 
145                         break;
146 
147                     case '\t':
148 
149                         sb.Append("\\t");
150 
151                         break;
152 
153                     case '/':
154 
155                         sb.Append("\\/");
156 
157                         break;
158 
159                     default:
160 
161                         // Reference: http://www.unicode.org/versions/Unicode5.1.0/
162 
163                         if ((ch >= '\u0000' && ch <= '\u001F')
164 
165                         || (ch >= '\u007F' && ch <= '\u009F')
166 
167                         || (ch >= '\u2000' && ch <= '\u20FF'))
168                         {
169 
170                             string ss = Convert.ToString(ch,16);
171 
172                             sb.Append("\\u");
173 
174                             for (int k = 0; k < 4 - ss.Length; k++)
175                             {
176 
177                                 sb.Append('0');
178 
179                             }
180 
181                             sb.Append(ss.ToUpper());
182 
183                         }
184                         else
185                         {
186 
187                             sb.Append(ch);
188 
189                         }
190 
191                         break;
192 
193                 }
194 
195             }
196 
197         }
198 
199     }
200 
201 
202 
203 }

 

 

 

目录
相关文章
|
1月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
1月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
1月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
157 3
|
1月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
264 3
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
2月前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
2月前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
2月前
|
机器学习/深度学习 JSON API
干货,淘宝拍立淘按图搜索,淘宝API(json数据返回)
淘宝拍立淘按图搜索API接口基于深度学习与计算机视觉技术,通过解析用户上传的商品图片,在淘宝商品库中实现毫秒级相似商品匹配,并以JSON格式返回商品标题、图片链接、价格、销量、相似度评分等详细信息。