C#解析Json的类
2009-09-06 16:48
323 查看
http://www.cnblogs.com/hiying/archive/2009/03/02/1401695.html
好久没写东西了,又开始写代码。今天写了点东西记下来:
现在json因为轻型,越来越流行,部门内部的数据标准趋向于json,所以开始学习。
本次工作内容是要将以下数据解析成.Net可以使用的数据,返回的数据除了header,其他的都是可变的,也就是说结构不是固定的。完全由用户选择,所以选择了生成DataTable。
Json数据格式如下:
解析的类:
好久没写东西了,又开始写代码。今天写了点东西记下来:
现在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" } ]} } } |
usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingSystem.Data; usingSystem.Web.Script.Serialization; namespaceTencent.Itil.Cmsi.Common { publicclassGeneralSearchResult { publicHeaderheader=newHeader(); privateDataTablefieldDefine=newDataTable(); ///<summary> /// 返回的数据结构定义,无数据 ///</summary> publicDataTableFieldDefine { get{returnfieldDefine;} set{fieldDefine=value;} } privateDataTableretrunData=newDataTable(); ///<summary> /// 返回的数据,格式为 DataTable ,结构和 FieldDefine 中的结构一样 ///</summary> publicDataTableRetrunData { get{returnretrunData;} set{retrunData=value;} } ///<summary> /// 将 json 数据转换为定义好的对象,数据转换为 DataTable ///</summary> ///<paramname="jsonText"></param> ///<returns></returns> publicstaticGeneralSearchResultGetTransformData(stringjsonText) { GeneralSearchResultgsr=newGeneralSearchResult(); JavaScriptSerializers=newJavaScriptSerializer(); 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>ssindicFieldDefine) { gsr.FieldDefine.Columns.Add(ss.Key,typeof(string)); } gsr.RetrunData=gsr.FieldDefine.Clone(); foreach(objectobinrows) { Dictionary<string,object>val=(Dictionary<string,object>)ob; DataRowdr=gsr.RetrunData.NewRow(); foreach(KeyValuePair<string,object>sssinval) { dr[sss.Key]=sss.Value; } gsr.RetrunData.Rows.Add(dr); } returngsr; } ///<summary> /// 数据文件头定义 ///</summary> publicclassHeader { privatestringversion; ///<summary> /// 版本 ///</summary> publicstringVersion { get{returnversion;} set{version=value;} } privatestringreturnCode; ///<summary> /// 结果码, 0 为正常,否则为有错误 ///</summary> publicstringReturnCode { get{returnreturnCode;} set{returnCode=value;} } privatestringerrorInfo; ///<summary> /// 如果 ReturnCode 为非 0 时的错误信息 ///</summary> publicstringErrorInfo { get{returnerrorInfo;} set{errorInfo=value;} } privateinttotalRows; ///<summary> /// 查询结果总行数 ///</summary> publicintTotalRows { get{returntotalRows;} set{totalRows=value;} } privateintreturnRows; ///<summary> /// 返回的数据行数 ///</summary> publicintReturnRows { get{returnreturnRows;} set{returnRows=value;} } } } } |
使用方法:
GeneralSearchResultgsr=newGeneralSearchResult(); gsr=GeneralSearchResult.GetTransformData(text); |
欢迎各位拍砖。
相关文章推荐
- C#对XML、JSON等格式的解析
- c#解析Json文件实例学习
- c#解析json的方法
- C#解析json文件的方法
- C#实现json格式数据解析功能的方法详解
- C#对XML、JSON等格式的解析
- c# 解析JSON的几种办法
- C#对XML、JSON等格式的解析 (转)
- c# 解析json(整理)
- C# 解析json类型字符串
- C#解析json的方法
- C#中的JSON封装与解析
- C# 解析json Newtonsoft.json
- c# json解析 .net4.0
- C#解析Json的类
- C# JSON解析类,将json转成实体类
- C#解析json文件的方法
- C# 解析 json
- C# 使用 System.Web.Script.Serialization 解析 JSON
- C# 解析 json