Я пытаюсь десериализовать некоторые данные JSON в объекты для приложения. До сих пор это было прекрасно, потому что свойства данных JSON были статическими (ключ со значением). Теперь у меня есть результат, когда ключ является динамической частью данных.
Здесь пример JSON url:
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, поэтому "динамический" недоступен!