Как я могу получить список ключей от Json.NET? - PullRequest
55 голосов
/ 29 июня 2011

Я использую 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 ]

127 голосов
/ 30 июня 2011
IList<string> keys = parent.Properties().Select(p => p.Name).ToList();

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

16 голосов
/ 29 марта 2016

С Преобразование свойств / токенов JSON.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> и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...