当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-08-30

    本文导语:  要求:将以下数据解析成.Net可以使用的数据,返回的数据除了header,其他的都是可变的,也就是说结构不是固定的。完全由用户选择,所以选择了生成DataTable。 Json数据格式如下:   代码如下: {"dataSet":{ "header":{ "returnCode":"0...

要求:将以下数据解析成.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"
}
]}
}
}

json解析类
 

代码如下:
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();
///
/// 返回的数据结构定义,无数据
///
public DataTable FieldDefine
{
get { return fieldDefine; }
set { fieldDefine = value; }
}
private DataTable retrunData = new DataTable();
///
/// 返回的数据,格式为DataTable,结构和FieldDefine中的结构一样
///
public DataTable RetrunData
{
get { return retrunData; }
set { retrunData = value; }
}
///
/// 将json数据转换为定义好的对象,数据转换为DataTable
///
///
///
public static GeneralSearchResult GetTransformData(string jsonText)
{
GeneralSearchResult gsr = new GeneralSearchResult();
JavaScriptSerializer s = new JavaScriptSerializer();
Dictionary JsonData = (Dictionary)s.DeserializeObject(jsonText);
Dictionary dataSet = (Dictionary)JsonData["dataSet"];
Dictionary header = (Dictionary)dataSet["header"];
Dictionary fieldDefine = (Dictionary)dataSet["header"];
Dictionary data = (Dictionary)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 dicFieldDefine = (Dictionary)dataSet["fieldDefine"];
foreach (KeyValuePair ss in dicFieldDefine)
{
gsr.FieldDefine.Columns.Add(ss.Key, typeof(string));
}
gsr.RetrunData = gsr.FieldDefine.Clone();
foreach (object ob in rows)
{
Dictionary val = (Dictionary)ob;
DataRow dr = gsr.RetrunData.NewRow();
foreach (KeyValuePair sss in val)
{
dr[sss.Key] = sss.Value;
}
gsr.RetrunData.Rows.Add(dr);
}
return gsr;
}
///
/// 数据文件头定义
///
public class Header
{
private string version;
///
/// 版本
///
public string Version
{
get { return version; }
set { version = value; }
}
private string returnCode;
///
/// 结果码,0为正常,否则为有错误
///
public string ReturnCode
{
get { return returnCode; }
set { returnCode = value; }
}
private string errorInfo;
///
/// 如果ReturnCode为非0时的错误信息
///
public string ErrorInfo
{
get { return errorInfo; }
set { errorInfo = value; }
}
private int totalRows;
///
/// 查询结果总行数
///
public int TotalRows
{
get { return totalRows; }
set { totalRows = value; }
}
private int returnRows;
///
/// 返回的数据行数
///
public int ReturnRows
{
get { return returnRows; }
set { returnRows = value; }
}
}
}
}

使用方法:
 

代码如下:
GeneralSearchResult gsr = new GeneralSearchResult();
gsr = GeneralSearchResult.GetTransformData(text);

    
 
 

您可能感兴趣的文章:

  • 用C#,asp.net 做的网站,能用Linux做服务器吗?
  • c#(asp.net)接收存储过程返回值的方法
  • c#正则过滤图片标签 asp.net正则过滤的例子
  • c#(asp.net)实现的文件下载函数
  • asp.net(c#版)添加DataRow数据列到DataTable控件
  • c#(asp.net)连接excel的实例代码
  • c#(asp.net) new与override的区别
  • asp.net(c#) 使用Rex正则来生成字符串数组的代码
  • asp.ent 图片上传数据库的代码(c#)
  • c# asp .net 动态创建sql数据库表的方法
  • c#(asp.net)生成随机数(不重复)的例子
  • c#(asp.net)访问母版页的控件、属性、方法介绍
  • c#(asp.net) 时间操作基类(支持长短日期与时间差)
  • asp.net C#检查URL是否有效的方法
  • c# UpdatePanel无刷新上传图片 asp.net无刷新上传
  • c#(asp.net)线程配置总结
  • c# asp.net 多线程实例(经典)
  • asp.net验证码代码(C#)
  • asp.net中C#获取字符串中汉字的个数的具体实现方法
  • asp.net(C#)生成无限级别菜单的代码
  • asp.net生成与解析二维码的例子
  • asp.net MVC进阶学习---HtmlHelper控件解析(五)
  • asp.net MVC进阶学习---HtmlHelper控件解析(四)
  • asp.net+ajax+sqlserver自动补全功能实现解析
  • asp.net MVC进阶学习---HtmlHelper控件解析(三)
  • asp.net MVC进阶学习---HtmlHelper控件解析(一)
  • asp.net各种cookie代码和解析实例
  • ASP.NE请求网址并解析返回的html
  • asp.net MVC进阶学习---HtmlHelper控件解析(二)
  • asp.net页面加载顺序细致解析
  • jquery.Ajax()方法调用Asp.Net后台的方法解析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c#/ASP.NET操作cookie(读写)代码示例
  • ??谁能把ASP代码改为JSP的
  • asp.net文字水印功能简单代码
  • asp连接sql server 2005的代码
  • asp.net读取本地与全局资料文件的代码
  • asp.net 获取目录中图片的代码
  • asp.net正则表达式提取中文的代码示例
  • 如何在ASP的frame框架中屏蔽右键,以防止查看页面的源代码?
  • asp 正则 过滤重复字符串的代码
  • asp正则过滤重复字符串的代码
  • asp去掉html,保留img br p div的正则实现代码
  • asp.net使用mshtml处理html的代码
  • asp.net 判断当前日期是该年中第几周的代码
  • asp.net中利用正则表达式判断一个字符串是否为数字的代码
  • asp.net弹出消息框、确认框的代码汇总
  • asp.net 获取ashx中数据的代码
  • asp.net防止页面刷新重复提交的代码
  • 编程技术其它 iis7站长之家
  • asp.net文件分块下载的实现代码
  • asp.net 正则表达式匹配图片路径的实现代码
  • [asp]中的正则表达式运用代码
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • Linux平台下哪种方法实现ASP好?
  • ASP和ASP.Net共享Session解决办法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3