Ответ 1
IList<string> keys = parent.Properties().Select(p => p.Name).ToList();
Документация: JObject.Properties
Я использую С# и 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);
}
}
}
IList<string> keys = parent.Properties().Select(p => p.Name).ToList();
Документация: JObject.Properties
Из Преобразование свойств/токенов 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>
и т.д.).