У меня нет проблемы десериализации JSON в известных типах или в словарных объектах, но как насчет случаев, когда я не знаю, каким будет вход? В частности, я имею в виду получение строку JSON, которая представляет собой плоскую или вложенную набор пар ключ-значение:Deserializing any using JSON.NET
{
foo: 'bar',
baz: 42
}
или
{
foo:
{
bar: 42,
baz: ['foo', 'bar', 'baz']
}
}
Но что о случаях, когда вход не является ключевым -value-pair, а скорее массив или массив объектов с другими вложенными объектами (включая массивы)?
[
{ foo: 'bar', baz: [ 1, 2, 3 ] },
{ foo: 'baz', bar: [ 4, 5, 6 ] }
]
Моя цель состоит в том, чтобы иметь единственный класс, который я мог десериализацию из вышеперечисленной в, а затем итерации каждый из ее членов. Вход может быть любой структуры, поэтому я не могу предположить, что данные будут соответствовать любому типу, который я уже определил.
Я не смог найти способ сделать это. У кого-нибудь есть какие-либо рекомендации?
Edit:
Кажется достаточно легко JToken.Parse строку JSON; полезным следующим шагом было бы перебрать его элементы и обработать JArray и JObject отдельно.
Рассматривали ли вы deserialising в динамический? http://stackoverflow.com/questions/4535840/deserialize-json-object-into-dynamic-object-using-json-net –
Да, я не могу заставить его работать, когда вход представляет собой массив без ключ. – joelc
Что вы подразумеваете под массивом без ключа? – Abion47