• 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"
            }
          ]
        }
      }
    }
    View Code

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

    效果图:                                            

    将json数据转成dictionary的代码:

    /// <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);
        }
    }
    

     使用方法:

    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+"
    ");//显示到界面
                }
                break;
            }
        }
    }
    
  • 相关阅读:
    Generate profile vspx
    (转)Connect string 中的 Intergrated Security
    删除数据库
    SQL Server问题之The remote procedure call failed. [0x800706be]
    SQL Server 2008 R2如何开启数据库的远程连接
    ubuntu 12.04 sourcelist 更新源
    Ubuntu12.04 命令gedit出错:Could not connect to session bus (
    解决 Ubuntu 12.04 无法调节屏幕亮度的问题
    Eclipse和PyDev搭建完美Python开发环境(Windows篇)
    raw_input() 与 input() __ Python
  • 原文地址:https://www.cnblogs.com/arxive/p/6841198.html
Copyright © 2020-2023  润新知