Я пытаюсь десериализовать JSON из службы REST. Я десериализую JSON в структуру. Структура содержит общедоступные свойства. Я хочу скрыть основные объекты string
/int
и использовать правильные объекты для каждого значения. При этом я скрывал исходные свойства и хотел найти способ заполнить их, несмотря на это. Я нашел relevant answer здесь, в stackoverflow. Проблема в том, что частные свойства фактически не получают никакого значения во время десериализации.JSON.NET не десериализует приватные свойства
Я тогда попытался создать свой собственный ContractResolver
. Я нашел приведенный ниже код для CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
.
var prop = base.CreateProperty(member, memberSerialization);
if (!prop.Writable)
{
var property = member as PropertyInfo;
if (property != null)
{
var hasPrivateSetter = property.GetSetMethod(true) != null;
prop.Writable = hasPrivateSetter;
}
}
return prop;
Это все еще не присваивает полностью частной собственности. Я не уверен, как исходить из этого, поскольку все решения, которые я смог найти, используют варианты этих двух решений. Как мне продолжить?
EDIT:
Я создал небольшой пример, который демонстрирует мою проблему. https://gist.github.com/Herbstein/9ea14e2a4d95dd5aa4430384bfeeedf3
Просьба создать [MVCE] (http://stackoverflow.com/help/mcve), чтобы продемонстрировать вашу проблему. В настоящее время вы не показываете, как выглядят ваши модели, как вы настраиваете преобразователь контрактов на seriaizer, как вы на самом деле выполняете сериализацию и т. Д. –
@RB Я собираюсь сделать это сразу. – Herbstein
@ RB. Я создал небольшой пример, который связан в OP. Вывод программы со всеми возможными конфигурациями - это просто пустая строка. – Herbstein