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的代码:
/// <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+"\r\n");//显示到界面

            }

            break;

        }

    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值