- 浏览: 150559 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
北极的。鱼:
几个常用的CSS效果:1.色块透明,文字不透明:设置色块的rg ...
网页前端的浏览器兼容 -
北极的。鱼:
数字证书的作用就是用来说明,里面的公钥是谁的。
数字签名 -
北极的。鱼:
数字证书的作用,其实就是证明,证书里包含的公钥是哪个人的。
数字签名 -
北极的。鱼:
面试题,类似冒泡排序把一个字符串的大写字母放到字符串的后面,各 ...
【转】冒泡排序 -
北极的。鱼:
另一种简单桶排序实现:
using System;
using ...
【转】桶排序(Bucket Sort)
网上转的,自己没测试过。大家有好的方法请跟帖共享,最好是要自己测试过的。
现在json因为轻型,越来越流行,部门内部的数据标准趋向于json,所以开始学习。
本次工作内容是要将以下数据解析成.Net可以使用的数据,返回的数据除了header,其他的都是可变的,也就是说结构不是固定的。完全由用户选择,所以选择了生成DataTable。
Json数据格式如下:
{"dataSet":{ "header":{ "returnCode":"0", "errorInfo":"HTTP请求错误", "version":"V1.0R010", "totalRows":"2000", "returnRows":"20" }, "fieldDefine":{ "assetId":"string", "serverIdcId":"int", "inputTime":"datetime" }, "data":{"row":[ { "AssetId":"TCNS2006888", "ServerIdcId":"1", "InputTime":"2008-12-12" }, { "AssetId":"TCNS2006889", "ServerIdcId":"2", "InputTime":"2008-1-1" } ]} } }
解析的类:
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Web.Script.Serialization; namespace Tencent.Itil.Cmsi.Common { public class GeneralSearchResult { public Header header = new Header(); private DataTable fieldDefine = new DataTable(); /// <summary> /// 返回的数据结构定义,无数据 /// </summary> public DataTable FieldDefine { get { return fieldDefine; } set { fieldDefine = value; } } private DataTable retrunData = new DataTable(); /// <summary> /// 返回的数据,格式为DataTable,结构和FieldDefine中的结构一样 /// </summary> public DataTable RetrunData { get { return retrunData; } set { retrunData = value; } } /// <summary> /// 将json数据转换为定义好的对象,数据转换为DataTable /// </summary> /// <param name="jsonText"></param> /// <returns></returns> public static GeneralSearchResult GetTransformData(string jsonText) { GeneralSearchResult gsr = new GeneralSearchResult(); JavaScriptSerializer s = new JavaScriptSerializer(); Dictionary<string, object> JsonData = (Dictionary<string, object>)s.DeserializeObject(jsonText); Dictionary<string, object> dataSet = (Dictionary<string, object>)JsonData["dataSet"]; Dictionary<string, object> header = (Dictionary<string, object>)dataSet["header"]; Dictionary<string, object> fieldDefine = (Dictionary<string, object>)dataSet["header"]; Dictionary<string, object> data = (Dictionary<string, object>)dataSet["data"]; object[] rows = (object[])data["row"]; gsr.header.Version = header["version"].ToString(); gsr.header.ErrorInfo = header["errorInfo"].ToString(); gsr.header.ReturnCode = header["returnCode"].ToString(); gsr.header.ReturnRows = Convert.ToInt16(header["returnRows"]); gsr.header.TotalRows = Convert.ToInt16(header["totalRows"]); Dictionary<string, object> dicFieldDefine = (Dictionary<string, object>)dataSet["fieldDefine"]; foreach (KeyValuePair<string, object> ss in dicFieldDefine) { gsr.FieldDefine.Columns.Add(ss.Key, typeof(string)); } gsr.RetrunData = gsr.FieldDefine.Clone(); foreach (object ob in rows) { Dictionary<string, object> val = (Dictionary<string, object>)ob; DataRow dr = gsr.RetrunData.NewRow(); foreach (KeyValuePair<string, object> sss in val) { dr[sss.Key] = sss.Value; } gsr.RetrunData.Rows.Add(dr); } return gsr; } /// <summary> /// 数据文件头定义 /// </summary> public class Header { private string version; /// <summary> /// 版本 /// </summary> public string Version { get { return version; } set { version = value; } } private string returnCode; /// <summary> /// 结果码,0为正常,否则为有错误 /// </summary> public string ReturnCode { get { return returnCode; } set { returnCode = value; } } private string errorInfo; /// <summary> /// 如果ReturnCode为非0时的错误信息 /// </summary> public string ErrorInfo { get { return errorInfo; } set { errorInfo = value; } } private int totalRows; /// <summary> /// 查询结果总行数 /// </summary> public int TotalRows { get { return totalRows; } set { totalRows = value; } } private int returnRows; /// <summary> /// 返回的数据行数 /// </summary> public int ReturnRows { get { return returnRows; } set { returnRows = value; } } } } }
使用方法:
GeneralSearchResult gsr = new GeneralSearchResult(); gsr = GeneralSearchResult.GetTransformData(text);
发表评论
-
【转】.NET老程序员推荐的7个开发类工具
2016-02-01 18:27 569很幸运工作以来一直是.NET + SQL Server 的开 ... -
【转】LAMDA表达式学习
2015-07-27 01:48 634转自: http://www.cnblogs.com/Tey ... -
深入.NET托管堆(managed heap)
2014-12-28 17:26 845转自http://blog.sina.com.cn/s/b ... -
C#中关于托管资源和非托管资源
2014-12-28 15:16 499转自百度文库 下面说一下在C#中使用托管资源和非托 ... -
[转]net GC
2014-09-17 22:02 522转自:http://blog.csdn.net/sykpb ... -
C#技术漫谈之垃圾回收机制(GC)
2014-07-22 00:15 813转自:http://kb.cnblogs.com/page ... -
Lambda表达式的前世今生
2014-07-10 22:58 675转自: http://www.cnblogs.com/Oce ... -
Net托管世界的应用程序域和线程
2014-05-17 01:41 1190转载:http://www.360doc.com/conte ... -
后台用C#发起HttpWeb请求
2014-09-17 22:03 698public static string HttpPost ... -
silverlight中的控件pivotviewer。
2012-02-17 17:33 1428最近的一个项目需要用到silverlight中的控件pivot ... -
【转】C#XML读写
2011-08-16 09:07 805一.前言: XML是微软.Net战略的一个重要组成部分,而 ... -
【转】盗链问题
2011-07-08 11:18 1038盗链 的危害我就不说了,网上有很多。 直接分析盗链原理 ... -
【转】C#-ADO.Net连接池和连接字符串剖析
2011-06-01 15:48 1908连接到数据库服务器通 ... -
【转】C# Sql连接池
2011-06-01 14:35 1613使用连接池 连接到数 ... -
【转】C#实现连接池
2011-06-01 11:04 2468转自:http://www.cnblogs.com ... -
关于C#中的特性小例子
2011-05-26 14:37 950最近要写一个网络报表。 众所周知,网络报表是程序员的一大噩梦 ... -
【转】const 与 readonly知多少
2011-05-23 10:25 859转自:http://www.cnblogs.c ... -
【转】Message Queue(微软消息队列)
2011-05-20 11:52 897Message Queue(微软消息队列) Mes ... -
c#获得元数据转JSON数据格式
2011-04-13 16:50 1162代码经过测试(非本人),看官有更好的后台数据转JSON的方法请 ... -
【转】C# Control的Invoke和BeginInvoke及其实现机制
2011-01-20 11:31 1646转自: http://www.soft-bin.com/ht ...
相关推荐
C# 解析json格式数据为IList<T>
C#解析Json数据(.html),C#解析Json数据(.html)(网页链接)
C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...
C#解析Json工具LitJson
C#对多级json解析,非常实用,此代码写在load事件里面,然后可以了解解析json的原理。尤其是多级解析。
C#解析json的Newtonsoft.Json.dll各种.net版本 .net2.0 .net3.5 .net4.0 .net4.5
C#中Json 解析类库,C# 解析json 时,通常使用的是强类型对象反序列化,但是有时候不知道具体的对象时,使用该类库,使用dictionary 解析弱类型数据
C#解析Json,共介绍了4种解析json的方法..喜欢哪种,自己选吧
c#如何解析Json 2种模式解析各种复杂的JSON格式
C# 手写的打印日志类,能控件日志输出项(可以控件输出日志形式[txt,html]两种形式,同时还可以控制只打印错误、信息、警告或全打印),解析JSON字符串
c#解析带数组的json,采用Newtonsoft.Json。资源是VS2013创建的工程。适合新手使用,老鸟就自己钻研解析哦~
C#解析Json字符串以及里面使用的.dll文件。
C#_json教程之C#开发json解析类
通过该类可以方便处理JSON字符串转变为OBJECT对象,欢迎修改。
C# 获取json字段中指定的值,省去写对象的烦恼,从而提升了代码的可读性,加速了json格式数据的解析和管理,直接调用有用的数据
C#解析JSON的 里面只有反序列化,不过附带了思路,很简单的方式
c# json 解析+C# newtonsoft.json.dll 解析类库文件。
仅保留了读取和解析json数据的相关类和方法(JsonReader,JsonSerializer),去除了写入json数据以及json和xml互相转换的部分以及其他不常用的类。 编译后dll仅20kb 也可以直接将类添加到项目中使用,非常方便 再次声明...
C#解析Json开源库-Newtonsoft.Json.zip
C#解析json用到的DLL