转自曾是土木人原文 C#:Json数据反序列化为Dictionary并根据关键字获取指定的值

Json数据:

  1. {
  2. "dataSet": {
  3. "header": {
  4. "returnCode": "",
  5. "errorInfo": "HTTP请求错误",
  6. "version": "V1.0R010",
  7. "totalRows": "",
  8. "returnRows": ""
  9. },
  10. "fieldDefine": {
  11. "assetId": "string",
  12. "serverIdcId": "int",
  13. "inputTime": "datetime"
  14. },
  15. "data": {
  16. "row": [
  17. {
  18. "AssetId": "TCNS2006888",
  19. "ServerIdcId": "",
  20. "InputTime": "2008-12-12"
  21. },
  22. {
  23. "AssetId": "TCNS2006889",
  24. "ServerIdcId": "",
  25. "InputTime": "2008-1-1"
  26. }
  27. ]
  28. }
  29. }
  30. }

问题:如何获取header中的数据行,以便显示在界面上?                                            

效果图:                                            

将json数据转成dictionary的代码:

  1. /// <summary>
  2. /// 将json数据反序列化为Dictionary
  3. /// </summary>
  4. /// <param name="jsonData">json数据</param>
  5. /// <returns></returns>
  6. private Dictionary<string, object> JsonToDictionary(string jsonData)
  7. {
  8. //实例化JavaScriptSerializer类的新实例
  9. JavaScriptSerializer jss = new JavaScriptSerializer();
  10. try
  11. {
  12. //将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
  13. return jss.Deserialize<Dictionary<string, object>>(jsonData);
  14. }
  15. catch (Exception ex)
  16. {
  17. throw new Exception(ex.Message);
  18. }
  19. }

使用方法:

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. //Json数据
  4. string 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\"}]}}}";
  5. Dictionary<string, object> dic = JsonToDictionary(json);//将Json数据转成dictionary格式
  6. Dictionary<string, object> dataSet=(Dictionary<string, object>)dic["dataSet"];
  7. //使用KeyValuePair遍历数据
  8. foreach (KeyValuePair<string, object> item in dataSet)
  9. {
  10. if (item.Key.ToString() == "header")//获取header数据
  11. {
  12. var subItem=(Dictionary<string,object>)item.Value;
  13. foreach (var str in subItem)
  14. {
  15. textBox1.AppendText(str.Key + ":" + str.Value+"\r\n");//显示到界面
  16. }
  17. break;
  18. }
  19. }
  20. }

C#:Json数据反序列化为Dictionary并根据关键字获取指定的值的更多相关文章

  1. C#Json数据反序列化为Dictionary并根据关键字获取指定的值

    Json数据: { "dataSet": { "header": { ", "errorInfo": "HTTP请求错误 ...

  2. C# Json数据反序列化为Dictionary并根据关键字获取指定值1

    Json数据: { "dataSet": { "header": { "returnCode": "0", " ...

  3. C# Json数据反序列化为Dictionary并根据关键字获取指定值

    Json数据: { "dataSet": { "header": { "returnCode": "0", " ...

  4. 将Dictionary序列化为json数据 、json数据反序列化为Dictionary

    需要引用System.Web.Extensions  dll类库 /// <summary> /// 将json数据反序列化为Dictionary /// </summary> ...

  5. 将JSON字符串反序列化为指定的.NET对象类型

    目录导航: 前言: 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 方法二.直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符 ...

  6. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

  7. Python: Json串反序列化为自定义类对象

    最近刚接触到python,就想到了如何反序列化json串.网上找了一下,大部分都是用json模块反序列化为python数据结构(字典和列表).如果对json模块不了解的参考菜鸟教程.然后我在此基础上将 ...

  8. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

  9. 从HTTP request的body中拿到JSON并反序列化为一个对象

    import com.google.gson.Gson; import org.apache.struts2.ServletActionContext; import javax.servlet.Se ...

随机推荐

  1. Java启动参数及调优

    java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且 ...

  2. BZOJ3529 [Sdoi2014]数表【莫比乌斯反演】

    Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...

  3. BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】

    BZOJ1002 FJOI2007 轮状病毒 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原 ...

  4. asp.net core microservices 架构之 分布式自动计算(一)

       一:简介   自动计算都是常驻内存的,没有人机交互.我们经常用到的就是console job和sql job了.sqljob有自己的宿主,与数据库产品有很关联,暂时不提.console job使 ...

  5. ES6变量解构赋值

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构ES6之前我们申明多个变量需要按照下面的方法: let l a=1; let b=2; let c=3; let d=4; ...

  6. cnpm 私服搭建(基于docker)

    备注:   使用docker-compose 进行安装 1. 代码clone git clone https://github.com/cnpm/cnpmjs.org.git 2. docker bu ...

  7. 网络流量监控分析工具 Ntopng 安装

    官方说明:http://packages.ntop.org/      http://packages.ntop.org/centos-stable/   http://packages.ntop.o ...

  8. Ubuntu下手动安装Nvidia显卡驱动

    1. 下载最新版的nVidia驱动. http://www.nvidia.com/page/drivers.html 2.编辑blacklist.conf. sudo gedit /etc/modpr ...

  9. SecureCRT导入已有会话

    如果别人有完整的环境信息,我们想拿过来,怎么导入?或者别人想要我的会话配置信息,怎么导出?对SecureCRT这个工具来说很easy,根本不需要去找什么导入.导出按钮,直接文件操作. 假如我的Secu ...

  10. Pdnovel 在线阅读体验

    pdnovel是discuz的一款小说阅读插件,本身是用php开发的,数据存储于mysql,小说文本存储于file文件.pdnovel本身已有添加书籍.连载章节的功能,但为了批量添加全本txt书籍又开 ...