简体   繁体   中英

How do I get the value in a generic Dictionary?

I have a json string like this:

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

In my Windows Form code I've been using JavaScriptSerializer for phare those line to dictionary.

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

It is working fine at the moment, but I don't know how to get value inside popup ? Because it's another dictionary.

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

The fastest (yet unsafe) way of doing it is like this is via the indexer:

First extract the first dictionary and cast, since the first dictionary will yield an object of type object :

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

Then, you extract the values based on keys:

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

If you're not sure both keys will exist in the result, you can use Dictionary.TryGetValue if they exist:

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

Use JSON .Net , then simply:

JObject dynJson = JObject.Parse(jsonString);

followed by:

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

JObject.Parse

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM