Я ищу способ частичной сериализации модели для Json, используя Json.Net. Как должна выглядеть частичная сериализация, которую я хочу определить в свойстве родительского объекта. Таким образом, частичная сериализация может отличаться для разных исходных моделей. Для того, чтобы проиллюстрировать, что я хочу здесь код:Частичная сериализация модели на основе атрибута свойства
private class MyTestObject
{
[SerializeOnly("TestValue1")]
[SerializeOnly("TestValue3")]
public ComplexTestObject Property1 { get; set; }
public MyTestObject()
{
Property1 = new ComplexTestObject();
}
}
private class ComplexTestObject
{
public string TestValue1 { get; set; }
public string TestValue2 { get; set; }
public string TestValue3 { get; set; }
public ComplexTestObject()
{
TestValue1 = "value1";
TestValue2 = "value2";
TestValue3 = "value3";
}
}
Теперь, когда я сериализовать экземпляр класса MyTestObject
Я хочу, чтобы получить следующий JSon:
{
"Property1" : {
"TestValue1" : "value1",
"TestValue3" : "value3",
}
}
Вы можете увидеть, что SerializeOnly
используется для определения того, какие свойства должны быть сериализованы.
Для этого я могу создать SerializeOnlyAttribute
. При попытке использовать это в пользовательском Serialization ContractResolver я могу видеть только атрибуты конкретного элемента, и поэтому я не вижу никаких SerializeOnlyAttribute
, потому что они находятся на родительском.
Есть ли простой способ добиться желаемого поведения с помощью Json.Net? Возможно, можно написать собственный JsonConverter, но как он может быть построен таким образом, чтобы покрывать только обработку атрибутов, и все еще используются преобразователи по умолчанию?
Удивительный! Мне нравится это решение! Thx :-) – Sjoerd222888
Нет проблем; Рад, что смог помочь. –