- 浏览: 158968 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
北极的。鱼:
几个常用的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 608很幸运工作以来一直是.NET + SQL Server 的开 ... -
【转】LAMDA表达式学习
2015-07-27 01:48 688转自: http://www.cnblogs.com/Tey ... -
深入.NET托管堆(managed heap)
2014-12-28 17:26 897转自http://blog.sina.com.cn/s/b ... -
C#中关于托管资源和非托管资源
2014-12-28 15:16 533转自百度文库 下面说一下在C#中使用托管资源和非托 ... -
[转]net GC
2014-09-17 22:02 580转自:http://blog.csdn.net/sykpb ... -
C#技术漫谈之垃圾回收机制(GC)
2014-07-22 00:15 849转自:http://kb.cnblogs.com/page ... -
Lambda表达式的前世今生
2014-07-10 22:58 737转自: http://www.cnblogs.com/Oce ... -
Net托管世界的应用程序域和线程
2014-05-17 01:41 1252转载:http://www.360doc.com/conte ... -
后台用C#发起HttpWeb请求
2014-09-17 22:03 783public static string HttpPost ... -
silverlight中的控件pivotviewer。
2012-02-17 17:33 1487最近的一个项目需要用到silverlight中的控件pivot ... -
【转】C#XML读写
2011-08-16 09:07 866一.前言: XML是微软.Net战略的一个重要组成部分,而 ... -
【转】盗链问题
2011-07-08 11:18 1077盗链 的危害我就不说了,网上有很多。 直接分析盗链原理 ... -
【转】C#-ADO.Net连接池和连接字符串剖析
2011-06-01 15:48 1979连接到数据库服务器通 ... -
【转】C# Sql连接池
2011-06-01 14:35 1711使用连接池 连接到数 ... -
【转】C#实现连接池
2011-06-01 11:04 2552转自:http://www.cnblogs.com ... -
关于C#中的特性小例子
2011-05-26 14:37 1029最近要写一个网络报表。 众所周知,网络报表是程序员的一大噩梦 ... -
【转】const 与 readonly知多少
2011-05-23 10:25 896转自:http://www.cnblogs.c ... -
【转】Message Queue(微软消息队列)
2011-05-20 11:52 932Message Queue(微软消息队列) Mes ... -
c#获得元数据转JSON数据格式
2011-04-13 16:50 1219代码经过测试(非本人),看官有更好的后台数据转JSON的方法请 ... -
【转】C# Control的Invoke和BeginInvoke及其实现机制
2011-01-20 11:31 1747转自: http://www.soft-bin.com/ht ...
相关推荐
C#中解析JSON通常使用的是Json.NET库,这是一个非常流行且功能强大的开源库,可以方便地进行JSON序列化和反序列化。如果你还没有安装,可以通过NuGet包管理器添加Json.NET到你的项目中。 使用Json.NET解析JSON为...
在提供的HTML文件"C# 解析JSON格式数据 - CSDN博客.html"中,可能包含了更详细的示例和解析技巧,配合"C# 解析JSON格式数据 - CSDN博客_files"中的资源,读者可以深入学习并实践C#解析JSON的各种方法。通过学习和...
LitJson是C#编程语言中一个轻量级的Json解析库,主要用来处理Json格式的数据。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写,同时也便于机器解析和生成,被广泛应用于...
C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...
首先,我们需要了解C#中用于解析JSON的库,最常用的是 Newtonsoft.Json,也被称为Json.NET。这是一个强大的JSON库,提供了丰富的功能,包括序列化、反序列化、JSON路径查询等。 解析JSON的基本步骤如下: 1. **...
总结来说,使用Json.NET库和Dictionary在C#中解析JSON是一种灵活且实用的方法,尤其适用于处理动态或未知结构的JSON数据。只需注意类型转换以及处理可能的异常,如找不到Key或类型不匹配。通过这种方式,你可以轻松...
在.NET框架中,C#是一种常用的编程语言,用于构建各种应用程序。在现代Web开发中,JSON(JavaScript Object Notation)已成为数据...在JsonStrTest这个项目中,你可以找到更多关于C#解析JSON字符串的实际示例和用法。
总结,C#解析JSON既有内置的`System.Text.Json`,也有流行的Json.NET库。两者都有各自的优点和适用场景。对于简单需求,内置库可能已足够;而对于更复杂的场景,Json.NET提供了更强大的功能。开发者应根据项目需求...
/// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic>对象。 /// 将Json字符串解析为dynamic[]对象。 /// Dictionary类型对象转换为Json格式字符串 /// C#...
如果不知道JSON的具体结构,可以使用`JObject`来解析JSON。这允许我们以键值对的形式访问JSON属性: ```csharp dynamic jsonObject = JObject.Parse(jsonString); Console.WriteLine(jsonObject.Name); // 输出...
通过以上知识点的实现,我们可以创建一个功能强大的日志系统,不仅可以记录常规信息,还能解析JSON数据,适应各种应用场景。在实际开发中,这样的日志类能够极大地提高问题诊断的效率,提升软件的健壮性。
本篇文章将详细介绍四种C#解析JSON的方法。 首先,理解JSON的基本语法至关重要。JSON的数据结构主要由对象和数组构成。对象是以花括号{}包围的键值对集合,键必须是字符串,用双引号括起,值可以是各种数据类型,...
除了`DeserializeObject`,还有其他几个用于解析JSON的方法,如`JObject.Parse`和`JArray.Parse`,它们返回的是Json.NET的动态类型,可以用于处理未知或不固定的JSON结构。但通常,直接使用强类型的方式更推荐,因为...
在本篇中,我们将深入探讨如何在C# ASP.NET环境中使用`com.force.json`库来解析JSON。 `com.force.json`是一个针对.NET平台的高性能JSON库,由Salesforce公司开发,它提供了快速且内存效率高的JSON解析和生成功能。...
这个工具的使用方法通常是这样的:开发者在界面上输入或复制一段JSON文本,然后点击“生成”按钮,工具会解析JSON并创建相应的C#代码。生成的代码可以直接复制到项目中,用于将JSON数据映射到对象实例,或者将对象...
在本场景中,我们探讨的是如何在C# WinForm应用中解析JSON数据,并将其显示在DataGridView控件中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和客户端之间的数据传输。 ...
5. **动态对象解析**: 如果你不确定JSON的结构,或者不想预先定义C#类,可以使用`JObject`或`JToken`来解析JSON为动态对象: ```csharp string dynamicJson = "{\"key1\":\"value1\",\"key2\":\"value2\"}"; ...
总之,C#解析JSON字符串主要依赖于Newtonsoft.Json库,它提供了丰富的API和灵活性,使得在C#中处理JSON变得简单而高效。无论是简单的对象转换,还是复杂的动态解析,都有对应的解决方案。理解并熟练掌握这些知识,...
在.NET开发领域,C#语言提供了多种方式来处理JSON数据,其中最受欢迎的库之一就是Newtonsoft.Json.dll。这个库由James Newton-King 开发,它为C#开发者提供了丰富的功能,便于序列化和反序列化JSON,使得JSON数据在...
操作类中包含: 1. 过滤特殊字符 2. 格式化字符型、日期型、布尔型 3. List转换成Json 4. 对象转换为Json ...10. 解析JSON字符串生成对象实体 11. 解析JSON数组生成对象实体集合 12. 反序列化JSON到给定的匿名对象