Как я могу выполнять итерацию по вложенным словарям с помощью JSON.NET?

У меня есть структура JSON, которую я хотел бы вручную преобразовать в объект POCO с помощью JSON.NET.

Структура JSON представляет собой набор вложенных словарей ... Корневой словарь содержит категории, следующий уровень содержит продукты внутри этих категорий, а последний уровень содержит версии этих продуктов.

{
        "category-1": {
           "product-1": {
              "product-version-1": {
                   "id":1,
                   ...
               }
            }
        },
        "category-2": {
           "product-2": {
              "product-version-2": {
                   "id":2,
                   ...
               }
            },
            "product-3": {
               "product-version-3": {
                   "id":3,
                   ...
                }
            }
         }
}

Я хотел бы разобрать эту структуру, имея в виду, что ключи всех словарей мне неизвестны заранее.

Это был код, который я написал (я собирался преобразовать в LINQ, как только он заработает ...) - я ожидал, что это сработает с парой вложенных циклов, но очевидно, что JTokens и JObjects работают не так, как я подумал ... Id всегда равен нулю.

var productsJObject = JObject.Parse(result.Content.ReadAsStringAsync().Result);

foreach (var category in productsJObject)
{
    foreach (var product in category.Value)
    {
        foreach (var version in product)
        {
            var poco = new Poco
                      {
                          Id = version.SelectToken("id").ToString()
                      };
        }
    }
}

Итак, мой вопрос, как я могу перебирать вложенные словари с помощью JSON.Net?

5
задан M.Babcock 23 January 2012 в 05:39
поделиться