Abrufen des Namens / Schlüssels eines JToken mit JSON.net

82

Ich habe einen JSON, der so aussieht

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

Ich analysiere dies als JArray:

var array = JArray.Parse(json);

Dann durchlaufe ich das Array:

foreach (var content in array)
{

}

content ist ein JToken

Wie kann ich den "Namen" oder "Schlüssel" jedes Elements abrufen?

Zum Beispiel "MobileSiteContent" oder "PageContent"

Alex
quelle

Antworten:

129

JTokenist die Basisklasse für JObject, JArray, JProperty, JValue, etc. Sie das verwenden können , Children<T>()zum Beispiel Verfahren eine gefilterte Liste eines JToken Kinder zu bekommen, die von einer bestimmten Art sind JObject. Jedes JObjectverfügt über eine Sammlung von JPropertyObjekten, auf die über die Properties()Methode zugegriffen werden kann. Für jeden JPropertykann man seine bekommen Name. (Natürlich können Sie auf ValueWunsch auch das bekommen , was ein anderes ist JToken.)

Alles zusammen haben wir:

JArray array = JArray.Parse(json);

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

Ausgabe:

MobileSiteContent
PageContent
Brian Rogers
quelle
24
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;
}
Priyanka Lad
quelle
23

Der Standarditerator für das JObject ist ein Wörterbuch, das über Schlüssel / Wert-Paare iteriert.

JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
    Console.WriteLine (pair.Key);
}
Brandin Perry
quelle