如何在泛型字典中获取值

本文关键字:获取 字典 泛型 | 更新日期: 2023-09-27 18:11:25

我有一个json字符串,像这样:

{
  "ipaddress": "xxx",
  "hostname": "comcast.xxx",
  "popup": {
    "position": "1256",
    "pagename": "home"
  }
}

在我的Windows窗体代码中,我一直使用JavaScriptSerializer将这些行添加到字典中。

var obj = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(json);

目前工作良好,但我不知道如何在popup内获得价值?因为它是另一本字典。

[7] = {[popup, System.Collections.Generic.Dictionary`2[System.String,System.Object]]}

如何在泛型字典中获取值

最快(但不安全)的方法是通过索引器:

首先提取第一个字典并强制转换,因为第一个字典将产生类型为object的对象:

var popup = (Dictionary<string, object>)obj["popup"];

然后,根据键提取值:

var position = popup["position"];
var pagename = popup["pagename"];

如果你不确定结果中是否存在两个键,如果它们存在,你可以使用Dictionary.TryGetValue:

obj position;
if (!popup.TryGetValue("position", out position))
{
    // Key isn't in the dictionary.
}

使用JSON .Net,然后简单地:

JObject dynJson = JObject.Parse(jsonString);

后接:

string data = dynJson["popup"]["position"];

JObject。解析