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

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

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"
        }
      ]
    }
  }
}
复制代码

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

效果图:                                            

将json数据转成dictionary的代码:

 

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

 

 使用方法:

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

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6841198.html ,如需转载请自行联系原作者    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值