Десериализация JSON с использованием JSon.NET с динамическими данными

Я пытаюсь десериализовать некоторые данные JSON в объекты для приложения. До сих пор все было в порядке, потому что свойства данных JSON были статическими (ключ со значением). Теперь у меня есть результат, в котором ключ - это динамический фрагмент данных.

Вот пример URL-адреса JSON:

http://en.wikipedia.org/w/api.php?action=query&format=json&pageids=6695&prop=info

Полученный JSON для этого:

{ "query" : { "pages" : { "6695" : { "counter" : "",
          "lastrevid" : 468683764,
          "length" : 8899,
          "ns" : 0,
          "pageid" : 6695,
          "title" : "Citadel",
          "touched" : "2012-01-03T19:16:16Z"
        } } } }

Хорошо, это здорово, за исключением того, что я не могу десериализовать данные "страниц" в объект. Если бы я определил класс для страниц, он должен был бы выглядеть так:

public class 6695
{
    public string counter { get; set; }
    public int lastrevid { get; set; }
    public int length { get; set; }
    public int ns { get; set; }
    public int pageid { get; set; }
    public string title { get; set; }
    public string touched { get; set; }
}

Чтобы десериализовать содержимое (используя JsonConvert.Deserialize (jsondata)), мы все знаем, что у нас не может быть класса с именем 6695. Мало того, имя класса должно быть другим (например, pageid = 7145 должно быть классом 7145).

Может показаться, что я извлекаю некоторые значения, если использую что-то вроде JObject.Parse (content), а затем получаю доступ к элементам как JArrays, но это довольно уродливо, и я все еще пытаюсь извлечь данные из массива страниц.

Ищу кого-нибудь, чтобы помочь с этим. Я не думаю, что это необычно, это просто не данные JSON, с которыми я сталкивался раньше и не знаю, как с ними обращаться.

Спасибо!

PS забыл упомянуть, что это на Windows Phone 7, поэтому "динамический" недоступен!

17
задан Bil Simser 5 January 2012 в 05:46
поделиться