C#解析Json的类{经典}【转】
2009-05-06 18:08
736 查看
本文转帖地址: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" } ]} } } |
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); |
相关文章推荐
- C#解析Json的类{经典}【转】
- C#解析Json的类{经典}【转】
- C#解析Json的类
- 关于C#使用DataContractJsonSerializer来进行JSON解析
- C#解析JSON字符串总结
- C#后台把多个字符串结果封装成JSON格式并返回前台解析
- 【C#基础】json数据解析
- C#解析json文件的方法
- C#对XML、JSON等格式的解析
- C#解析json文件的方法
- C#解析json文件的方法
- C#对XML、JSON等格式的解析 (转)
- c# 解析JSON的几种办法
- C#解析json
- C# 解析JSON数据格式 Mono 源码
- C#项目中Json字符串解析
- json 对象的解析c#
- c# 解析JSON的几种办法
- C#对XML、JSON等格式的解析
- 关于C#向服务器请求json数据并解析