[JsonExtensionData] позволяет сериализовать элементы документа JSON, которые не имеют свойств, совпадающих в целевом объекте, со словарем, украшенным атрибутом [JsonExtensionData].
Как создать словарь объектов, приведенных к соответствующему типу??
Например:
var json = "{\r\n \"sampleClass\":{ \"name\":\"Name\"} ,
\"sampleOtherClass\":{ \"name\":\"OtherName\"} ,\r\n \"X\": \"Jan\"\r\n}";
и
var result =JsonConvert.DeserializeObject(json);
и
public class Test
{
public string X { get; set; }
[JsonExtensionData]
public Dictionary Y { get; set; }
}
Словарь должен содержать такие элементы:
Dictionary students = new Dictionary()
{
{ "sampleClass", new ClassName { Name="MyName" } },
{ "sampleOtherClass", new SampleOtherClass { Name="MyName" } }
};
Это означает, что для узла sampleClass мы хотим создать объект SampleClass, а затем добавить словарь Y.
В настоящее время значение в DictionaryEntry представляет собой строку, например { name: "Name"
Источник:
https://dotnetfiddle.net/mhU6ME
Обновление:
Теперь я использовал приведенный ниже подход для десериализации, но когда я хочу иметь один словарь [JsonExtensionData] для десериализации/сериализации, это приводит к проблемам есть две коллекции.
public class Class1
{
public string Code { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
[JsonExtensionData]
public Dictionary _JTokenProperty { get; set; }
public Dictionary Properties1 { get; set; } = new Dictionary();
}
Подробнее здесь: https://stackoverflow.com/questions/532 ... th-casting