web-dev-qa-db-fra.com

Obtenir le nom / la clé d'un JToken avec JSON.net

J'ai du JSON qui ressemble à ceci

[
  {
    "MobileSiteContent": {
      "Culture": "en_au",
      "Key": [
        "NameOfKey1"
      ]
    }
  },
  {
    "PageContent": {
      "Culture": "en_au",
      "Page": [
        "about-us/"
      ]
    }
  }
]

J'analyse ceci comme un JArray:

var array = JArray.Parse(json);

Ensuite, je boucle sur le tableau:

foreach (var content in array)
{

}

content est un JToken

Comment puis-je récupérer le "nom" ou la "clé" de chaque article?

Par exemple, "MobileSiteContent" ou "PageContent"

67
Alex

JToken est la classe de base pour JObject, JArray, JProperty, JValue, etc. Vous pouvez utiliser le Children<T>() méthode pour obtenir une liste filtrée des enfants d'un JToken appartenant à un certain type, par exemple JObject. Chaque JObject possède une collection d'objets JProperty, accessibles via la méthode Properties(). Pour chaque JProperty, vous pouvez obtenir son Name. (Bien sûr, vous pouvez aussi obtenir le Value si vous le souhaitez, ce qui est un autre JToken.)

En réunissant tout cela, nous avons:

JArray array = JArray.Parse(json);

foreach (JObject content in array.Children<JObject>())
{
    foreach (JProperty prop in content.Properties())
    {
        Console.WriteLine(prop.Name);
    }
}

Sortie:

MobileSiteContent
PageContent
108
Brian Rogers

L'itérateur par défaut pour le JObject est un dictionnaire itérant des paires clé/valeur.

JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
    Console.WriteLine (pair.Key);
}
19
Brandin Perry
JObject obj = JObject.Parse(json);
var attributes = obj["parent"]["child"]...["your desired element"].ToList<JToken>(); 

foreach (JToken attribute in attributes)
{   
    JProperty jProperty = attribute.ToObject<JProperty>();
    string propertyName = jProperty.Name;
}
18
Priyanka Lad