Десериализовать JSON с известными и неизвестными полями
Имеется следующий результат json: Результат json по умолчанию имеет известный набор полей:
{
"id": "7908",
"name": "product name"
}
Но может быть расширен дополнительными полями (в этом примере_unknown_field_name_1
а также_unknown_field_name_2
) из которых имена не известны при запросе результата.
{
"id": "7908",
"name": "product name",
"_unknown_field_name_1": "some value",
"_unknown_field_name_2": "some value"
}
Я хотел бы, чтобы результат json был сериализован и десериализован в класс и из класса со свойствами для известных полей и сопоставил неизвестные поля (для которых нет свойств) со свойством (или несколькими свойствами), таким как словарь, чтобы они могли быть доступ и изменение.
public class Product
{
public string id { get; set; }
public string name { get; set; }
public Dictionary fields { get; set; }
}
Я думаю, что мне нужен способ подключиться к сериализатору json и выполнить сопоставление для недостающих членов самостоятельно (как для сериализации, так и для десериализации). Я искал различные возможности:
json.net и обработчики пользовательских контрактовне придумаю как это сделать)сериализатор данных (может переопределять только сериализацию, сериализацию)сериализовать в динамический и сделать пользовательское сопоставление (это может работать, но кажется много работы)позволить продукту наследовать от DynamicObject (сериализаторы работают с отражением и не вызывают методы trygetmember и trysetmember) I 'м, используя restsharp, но любой сериализатор может быть подключен.
О, и я не могу изменить результат JSON, иэтот или жеэтот А не было»мне тоже не поможет
Обновить: Это больше похоже на это:http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx