Как десериализовать словарь [JsonExtensionData] с помощью приведенияC#

Место общения программистов C#
Anonymous
Как десериализовать словарь [JsonExtensionData] с помощью приведения

Сообщение Anonymous »

[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

Вернуться в «C#»