Отримання імені / ключа JToken за допомогою JSON.net


82

У мене є JSON, який виглядає так

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

Я аналізую це як JArray:

var array = JArray.Parse(json);

Потім я циклічно перебираю масив:

foreach (var content in array)
{

}

content це JToken

Як я можу отримати "ім'я" або "ключ" кожного елемента?

Наприклад, "MobileSiteContent" або "PageContent"

Відповіді:


130

JTokenє базовим класом для JObject, JArray, JProperty, JValueі т.д. Ви можете використовувати Children<T>()метод , щоб отримати відфільтрований список дітей , яких JToken, що мають певного типу, наприклад JObject. Кожен JObjectмає колекцію JPropertyоб’єктів, до яких можна отримати доступ за допомогою Properties()методу. Для кожного JPropertyви можете отримати своє Name. (Звичайно, ви також можете отримати Valueбажане, а це інше JToken.)

Склавши все це разом, ми маємо:

JArray array = JArray.Parse(json);

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

Вихід:

MobileSiteContent
PageContent

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;
}

23

Ітератор за замовчуванням для JObject - це словник, що ітераціює над парами ключ / значення.

JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
    Console.WriteLine (pair.Key);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.