Как Deserialize [jsonextensionData] Словарь <строка, объект> с кастингомC#

Место общения программистов C#
Ответить
Anonymous
 Как Deserialize [jsonextensionData] Словарь <строка, объект> с кастингом

Сообщение Anonymous »

[jsonextensionData] позволяет вам сделать, чтобы сериализовать элементы документа JSON, который не обладает соответствующими свойствами на объекте назначения с словарем, который украшен атрибутом [jsonextensionData]. Пример: < /p>

var json = "{\r\n \"sampleClass\":{ \"name\":\"Name\"} ,
\"sampleOtherClass\":{ \"name\":\"OtherName\"} ,\r\n \"X\": \"Jan\"\r\n}";
< /code>

и < /p>

var result =JsonConvert.DeserializeObject(json);
< /code>

и < /p>

public class Test
{
public string X { get; set; }

[JsonExtensionData]
public Dictionary Y { get; set; }
}
< /code>

Словарь должен содержать такие элементы: < /p>

Dictionary students = new Dictionary()
{
{ "sampleClass", new ClassName { Name="MyName" } },
{ "sampleOtherClass", new SampleOtherClass { Name="MyName" } }
};
< /code>

, что означает, что для Node Spectionslass мы хотим создать объектный sampleclass, а рядом с добавлением словаря y. < /p>

В настоящее время значение в словаре - это строка, например. {name: "name"} < /p>

Источник:
https://dotnetfiddle.net/mhu6me

обновление: < /strong> < /p>

[JsonextensionData] Словарь, чтобы десериализовать /сериализовать, он вызывает проблемы, чтобы иметь две коллекции. < /P>

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#»