如何获取通用字典中的值?

时间:2015-09-07 07:37:07

标签: c# generics dictionary

我有一个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]]}

2 个答案:

答案 0 :(得分:3)

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

首先提取第一个字典并进行转换,因为第一个字典将产生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.
}

答案 1 :(得分:1)

使用JSON .Net,然后只需:

JObject dynJson = JObject.Parse(jsonString);

接下来是:

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

JObject.Parse