`
byytj
  • 浏览: 48691 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Json数据格式生成DataTable

 
阅读更多


好久没写东西了,又开始写代码。今天写了点东西记下来:

现在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);

分享到:
评论

相关推荐

    json获取datatable后生成table分页显示

    *jQuery通过json方法获取datatable数据 *将datatable数据转换成table *将table分页显示

    json获取datatable后生成table分页显示checkbox全选

    *适用于查询,一次加载,减少访问服务器频率 *使用json获取datatable数据 *将datatable转换为table *将table分页 *checkbox全选

    C# Json转换DataTable源文件

    JSON格式如下:只需要简单传入以下格式字符串,就能轻松生成C#常用DataTable类型数据。主要用于Ajax,客户端DataGrid数据回传处理。 { "total":20, "rows":[ {"code":"001","name":"Name 1","addr":"Address ...

    读取json文件生成菜单,arcgis js api一些常用功能及web开发常用插件

    1,读取json文件生成菜单, 2,arcgis js api地图加载及一些常用功能,, 3,web开发常用插件基本使用:jspanel弹窗插件;datatable数据表格;viewer.js图片查看插件;zTree树插件;Echarts图表插件;

    asp.net(C#)解析Json的类代码

    Json数据格式如下: 代码如下: {”dataSet”:{ “header”:{ “returnCode”:”0″, “errorInfo”:”HTTP请求错误”, “version”:”V1.0R010″, “totalRows”:”2000″, “returnRows”:”20″ }, ...

    将数据类型序列化比如datatable转joson

    很多情况下,我们需要把数据类型做一些转换,供其它外部的子系统调用。最为典型的是生成json格式供javascript作调用。 序列化,反序列化的相互实现过程,编码中应该避免过度拼接的过程

    DataTable获取列名 DataTable批量更新至数据库

     在处理数据的时候大家都会用到模型,从datatable遍历数据的时候可以用datatable的columns属性获取列名,然后可以动态的用datatable  生成一个josn字符串,然后再讲json字符串转化成你想要的model,是不是很方便...

    如何使用json在前后台进行数据传输实例介绍

    上一篇博客写到用javascript生成多组文本,可以让数据的输入不受显示,现在我们需要把这些输入写入数据库,这里就用到json传入。 首先,我们来写一下后台如何生成要传输的数据 [html] 代码如下: function ...

    asp.net动态生成js导航菜单的方法

    非常抱歉,上传传错误东西了。根据用户的权限(datatable)数据动态生成导航菜单。如果不能用,你可以q我。

    扩展MVVM数据模型的JS类库Kero.zip

    Kero是一个用于扩展MVVM架构中数据模型的JS类库,实现了数据和UI的双向绑定,帮助开发者快速构建数据驱动型应用,解决复杂数据交互问题。Kero 做为 MVVM 架构中 Model 层的增强,主要功能有:以行、列的形式对数据做...

    json_table:Flutter软件包:Json Table小部件,用于从json数组创建表

    该表是手动编码的,因此对于如何在Flutter中手动创建简单表有很大的学习目的支持垂直和水平滚动支持自定义列,包括默认值,列名,值生成器支持嵌套数据显示支持分页支持行选择颜色,回调 :laptop: 安装在pubspec....

    vue3-tailwindcss-datatable

    当前功能接受对象的任何json数组作为数据,仅显示所需的字段100%控制标记和样式; 一切都通过插槽工作使用本地和远程数据(使用您自己的api函数) 响应性强,删除不太重要的数据列以获得较小的断点自动和响应式分页...

    xresloader:跨平台Excel导表工具(Excel => protobufmsgpackluajavascriptjsonxml)

    支持导出UnrealEngine支持的json或csv格式,支持自动生成和导出UnrealEngine的DataTable加载代码 支持别名表,用于给数据内容使用一个易读的名字 支持验证器,可以在数据里直接填充proto串联名称或枚举名,或者验证...

    C#基类库大全

    ConvertJson List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 9.Mime MediaTypes MimeEntity MimeHeaders MimeReader QuotedPrintableEncoding 10.PDF 转化类 PDF...

    C#基础类库

    List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 8.Mime MediaTypes 电子邮件类型帮助类,规定是以Xml,HTML还是文本方式发送邮件 MimeEntity Mime实体帮助类...

    C#基类库大全下载--苏飞版

    List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 8.Mime MediaTypes 电子邮件类型帮助类,规定是以Xml,HTML还是文本方式发送邮件 MimeEntity Mime实体帮助类...

    C#基类库(苏飞版)

    List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 8.Mime MediaTypes 电子邮件类型帮助类,规定是以Xml,HTML还是文本方式发送邮件 MimeEntity Mime实体帮助类...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

Global site tag (gtag.js) - Google Analytics