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

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

Json数据:

C#:Json数据反序列化为Dictionary并根据关键字获取指定的值
C#:Json数据反序列化为Dictionary并根据关键字获取指定的值
{
  "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"
        }
      ]
    }
  }
}
C#:Json数据反序列化为Dictionary并根据关键字获取指定的值

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

效果图:                                            

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

将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<stringobject> JsonToDictionary(string jsonData)
{
    //实例化JavaScriptSerializer类的新实例
    JavaScriptSerializer jss = new JavaScriptSerializer();
    try
    {
        //将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
        return jss.Deserialize<Dictionary<stringobject>>(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<stringobject> dic = JsonToDictionary(json);//将Json数据转成dictionary格式
    Dictionary<stringobject> dataSet=(Dictionary<stringobject>)dic["dataSet"];
    //使用KeyValuePair遍历数据
    foreach (KeyValuePair<stringobject> 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,如需转载请自行联系原作者