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;

        }

    }

}



  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中解析JSON数据可以使用Newtonsoft.Json库。这个库可以将JSON数据转换成.NET对象,或者将.NET对象转换成JSON数据。 以下是一个例子,展示如何解析JSON数据获取其中的: ```csharp using Newtonsoft.Json.Linq; // json是一个包含JSON数据的字符串 string json = "{ \"name\": \"John\", \"age\": 30 }"; // 将JSON数据转换成JObject对象 JObject obj = JObject.Parse(json); // 从JObject对象中获取 string name = (string)obj["name"]; int age = (int)obj["age"]; ``` 首先,使用JObject.Parse方法将JSON数据转换成JObject对象。然后,使用索引器访问对象的属性并强制转换为需要的类型。 当然,如果你知道JSON数据结构的具体格式,还可以使用反序列化来将JSON数据转换成.NET对象。这种方法更加方便,因为你可以直接使用.NET对象的属性和方法来访问数据。 以下是一个例子,展示如何使用反序列化来解析JSON数据: ```csharp using Newtonsoft.Json; // 定义一个.NET类来表示JSON数据的结构 public class Person { public string Name { get; set; } public int Age { get; set; } } // json是一个包含JSON数据的字符串 string json = "{ \"name\": \"John\", \"age\": 30 }"; // 将JSON数据反序列化成Person对象 Person person = JsonConvert.DeserializeObject<Person>(json); // 访问Person对象的属性 string name = person.Name; int age = person.Age; ``` 这个例子中,我们定义了一个Person类来表示JSON数据的结构。然后,使用JsonConvert.DeserializeObject方法将JSON数据反序列化成Person对象。最后,通过访问Person对象的属性来获取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值