Как десериализовать словарь [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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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