Подтвердить что ты не робот

Как я могу получить список ключей от Json.NET?

Я использую С# и Json.NET. Если у меня есть JObject, я хочу список ключей внутри объекта, подобно тому, как object.Keys() возвращает ключи внутри объекта. Кажется, это было бы очевидно, но у меня есть трудное время, чтобы найти способ сделать это.

Edit: Я прохожу через объект, и я хочу выплюнуть все ключи в объекте, когда я пройду. Я понимаю, что этот пример приведет к тому, что один и тот же ключ будет несколько раз, и что ОК для моих нужд.

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

Ответ 1

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

Документация: JObject.Properties

Ответ 2

Из Преобразование свойств/токенов JOb.NET JObject в словарные ключи

Вы можете просто преобразовать JObject в объект Dictionary и получить доступ к методу Keys() из объекта Dictionary.

Вот так:

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> и т.д.).