如何从Json.NET获取密钥列表?

时间:2011-06-29 14:28:40

标签: c# json.net

我正在使用C#和Json.NET。如果我有一个JObject,我想要一个对象内的键列表,类似于object.Keys()返回对象中键的方式。这看起来很明显,但我很难找到一种方法来做到这一点。

修改 我正在遍历这个对象,我想在我经历时吐出对象中的所有键。我意识到这个例子会导致多次看到相同的密钥,这对我的需求是可以接受的。

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

2 个答案:

答案 0 :(得分:124)

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

文档:JObject.Properties

答案 1 :(得分:11)

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

您可以简单地将JObject转换为Dictionary对象,并从Dictionary对象访问方法Keys()

像这样:

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

您现在可以通过dictObj.Keys()方法访问这些密钥。您也可以通过执行dictObj.ContainsKey(keyName)来查看密钥是否存在。

显然,您可以根据需要格式化词典(可以是Dictionary<string, object>等)。