web-dev-qa-db-fra.com

Comment puis-je obtenir une liste de clés de Json.NET?

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);
        }
    }
}
57
John
IList<string> keys = parent.Properties().Select(p => p.Name).ToList();

Documentation: JObject.Properties

128
James Newton-King

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.).

18
Blairg23