J'utilise C # et Json.NET. Si j'ai un JObject, je veux une liste des clés dans l'objet, semblable à la façon dont object.Keys()
renvoie les clés dans l'objet. Cela semble évident, mais j'ai du mal à trouver un moyen de le faire.
Edit: Je traverse l'objet, et je veux cracher toutes les clés de l'objet au fur et à mesure. Je me rends compte que cet exemple se traduira par voir la même clé plusieurs fois, et c'est OK pour mes besoins.
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();
Documentation: JObject.Properties
De Conversion des propriétés/jetons d'un JSON.NET JObject en clés de dictionnaire
Vous pouvez simplement convertir le JObject
en un objet Dictionary et accéder à la méthode Keys()
depuis l'objet Dictionary.
Comme ça:
using Newtonsoft.Json.Linq;
//jsonString is your JSON-formatted string
JObject jsonObj = JObject.Parse(jsonString);
Dictionary<string, string> dictObj = jsonObj.ToObject<Dictionary<string, string>>();
Vous pouvez maintenant accéder à ces clés via la méthode dictObj.Keys()
. Vous pouvez voir si une clé existe en exécutant également dictObj.ContainsKey(keyName)
.
Évidemment, vous pouvez formater le dictionnaire comme vous le souhaitez (pourrait être Dictionary<string, object>
, Etc.).