C# 将 Json 解析成 DateTable
#region 将 Json 解析成 DateTable ///
/// 将 Json 解析成 DateTable。
/// Json 数据格式如: ///
{table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}
///
///要解析的 Json 字符串
/// 返回 DateTable public DataTable JsonToDataTable(string strJson)
{
//
取出表名 var rg = new Regex(@(?<={)[^:]+(?=:[), RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value; DataTable tb = null;
// 去除表名 strJson = strJson.Substring(strJson.IndexOf([) + 1);
strJson = strJson.Substring(0, strJson.IndexOf(]));
// 获取数据
rg = new Regex(@(?<={)[^}]+(?=})); MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++) {
string strRow = mc[i].Value; string[] strRows = strRow.Split(',');
// 创建表 if (tb == null) { tb = new DataTable();
tb.TableName = strName; foreach (string str in strRows)
{ var dc = new DataColumn();
string[] strCell = str.Split(':');
dc.ColumnName = strCell[0].Replace(, );
tb.Columns.Add(dc); }
tb.AcceptChanges();
} // 增加内容 DataRow dr = tb.NewRow();
for (int j = 0; j < strRows.Length; j++)
{ dr[j] = strRows[j].Split(':')[1].Replace(,
);
} tb.Rows.Add(dr);
tb.AcceptChanges();
}
return tb; }
#endregion
|
1
|
|
|
1
|
|
格式如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
{ table: [ { column1: 1, column2: 2, column3: 3 }, { column1: 1, column2: 2, column3: 3 } ]} |
例如:
|
1
|
[{Code:MetaDataId,Name:MetaDataId},{Code:MetadataCode,Name:编号},{Code:SolutionName,Name:名称}] |
格式化后:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[ { Code: MetaDataId, Name: MetaDataId }, { Code: MetadataCode, Name: 编号 }, { Code: SolutionName, Name: 名称 }] |
C# 将 Json 解析成 DateTable的更多相关文章
- FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)
折腾小半天的问题,这里先感谢一下深圳的小伙子,远程帮我搞,虽然也没有搞出来==========FUCK 声明:Android开发下发生此异常,Java开发下并不会有这个问题 异常重现 简单说一下抛出异 ...
- 把复杂json解析成javabean
工具:fastjson1.2.9 用其他工具也行,比如json-lib.gson 用法都差不多 先来一段json { "page": { "pagenow": ...
- c#将前端传来的Json解析成对象
描述:因工作中需要将C#中的Json字符串转换为对象,对此记录下. 解决办法: 1.前端传过来的Json字符串,OrderAppModuleJson即前端传递到后端的Json字符串 string st ...
- python小练--使用正则表达式将json解析成dict
练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...
- JSONHelp json解析成类,类解析成string
using System; using System.Collections.Generic; using System.IO; using System.Runtime.Serialization. ...
- 将JSON转成DataSet(DataTable)
方法1: /// <summary> /// 将JSON解析成DataSet只限标准的JSON数据 /// 例如:Json={t1:[{name:'数据name',type:'数据type ...
- 通俗易懂的 JSon解析处理
1.主要用到的类: 主要用到了JavaScriptSerializer类,该类在System.Web.Script.Serialization命名空间(在System.Web.Extensions.d ...
- Android项目--Json解析
在过去的一段时间里,我希望做一个天气的应用,但是由于老版的天气接口已经不能用了.只能更新到2014年3月4日. 不过有些东西,哪来学习一下,也是可以的. 比如:http://m.weather.com ...
- JavaJavaScript小问题系列之JSON解析
1.错误消息及截图 这个很搞笑也很纠结,今天一开发妹子,发现一个问题: 服务端返回字符串"{\"phone\":\"15000000000\"}&qu ...
随机推荐
- BZOJ4275 : [ONTAK2015]Badania naukowe
设f[i][j]为a[1..i]与b[1..j]的LCS,g[i][j]为a[i..n]与b[j..m]的LCS. 若C为0,则ans=f[n][m]. 否则求出d[i]=a中从i开始往右匹配上c串的 ...
- BZOJ4247 : 挂饰
首先将挂饰按照挂钩个数从大到小排序,然后DP 设f[i][j]处理完前i个挂饰,还有j个多余挂钩的最大喜悦值,则 f[0][1]=0 f[i][j]=max(f[i-1][max(j-a[i],0)+ ...
- j.u.c系列(02)---线程池ThreadPoolExecutor---tomcat实现策略
写在前面 本文是以同tomcat 7.0.57. jdk版本1.7.0_80为例. 线程池在tomcat中的创建实现为: public abstract class AbstractEndpoint& ...
- [苹果]苹果AppStore应用审核标准
[苹果]苹果AppStore应用审核标准 http://wenku.baidu.com/view/a9152d2c647d27284b7351a1.html 苹果app审核指南 http://we ...
- code.google.com/p/log4go 下载失败
用 glide 下载 goim 的依赖包时报错,提示: code.google.com/p/log4go 找不到,即下载失败 主要是 code.google.com 网站已关闭导致的, 有人把它 fo ...
- 自定义两行可左右滑动的GridView
效果图: xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...
- GoDaddy Linux主机支持机房的更换
GoDaddy Linux主机支持机房的更换 http://godaddy.idcspy.com/godaddy-change-data-center GoDaddy推出中文界面后,小编发现虚拟主机有 ...
- Odoo进销存(采购、销售、仓库)入门教程 - 上
转载地址:http://blog.csdn.net/wangnan537/article/details/46434373 运行环境: Ubuntu14.04+Odoo8.0 作者:苏州-微尘 0. ...
- Android中Service类onStartCommand的返回值问题
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart ...
- unity3d 5.6烘焙教程
unity5.6是今年发布,作为5.x的最后一个版本,有很多烘焙优势,在此总结一些作为5.x系列完结的笔记这个版本在烘焙上的特点就是增加了渐进光照贴图(Progressive Lightmapper) ...