How can I get a list of keys from Json.NET?

风流意气都作罢 提交于 2019-12-17 07:15:42

问题


I'm using C# and Json.NET. If I have a JObject, I want a list of the keys within the object, similar to how object.Keys() returns the keys within the object. This seems like it'd be obvious, but I'm having a rough time finding a way to do this.

Edit: I'm traversing through the object, and I want to spit out all the keys in the object as I go through. I realize that this example will result in seeing the same key multiple times, and that's OK for my needs.

public void SomeMethod(JObject parent) {
    foreach (JObject child in parent.Children()) {
        if (child.HasValues) {
        //
        // Code to get the keys here
        //
        SomeMethod(child);
        }
    }
}

回答1:


IList<string> keys = parent.Properties().Select(p => p.Name).ToList();

Documentation: JObject.Properties




回答2:


From Converting a JSON.NET JObject's Properties/Tokens into Dictionary Keys

You can simply convert the JObject into a Dictionary object and access the method Keys() from the Dictionary object.

Like this:

using Newtonsoft.Json.Linq;
//jsonString is your JSON-formatted string
JObject jsonObj = JObject.Parse(jsonString);
Dictionary<string, string> dictObj = jsonObj.ToObject<Dictionary<string, string>>();

You can now access those keys via the dictObj.Keys() method. You can see if a key exists by performing dictObj.ContainsKey(keyName) also.

Obviously, you can format the Dictionary however you want (could be Dictionary<string, object>, etc.).



来源:https://stackoverflow.com/questions/6522358/how-can-i-get-a-list-of-keys-from-json-net

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!