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

John picture John · Jun 29, 2011 · Viewed 77.8k times · Source

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);
        }
    }
}

Answer

James Newton-King picture James Newton-King · Jun 30, 2011
IList<string> keys = parent.Properties().Select(p => p.Name).ToList();

Documentation: JObject.Properties