System.Text.Json Полиморфная десериализация без привязки свойства дискриминатора типаC#

Место общения программистов C#
Ответить
Anonymous
 System.Text.Json Полиморфная десериализация без привязки свойства дискриминатора типа

Сообщение Anonymous »

Я пытаюсь выполнить полиморфную десериализацию, используя System.Text.Json в net-8.0. Вот моя схема.

Код: Выделить всё

[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")]
[JsonDerivedType(typeof(Manager), "Manager")]
[JsonDerivedType(typeof(Developer), "Developer")]
public class Employee
{
public string Type { get; set; }
public string Name { get; set; }
}

public class Manager : Employee
{
public string Phone { get; set; }
}

public class Developer : Employee
{
public string Laptop { get; set; }
}
Вот мой json.

Код: Выделить всё

[
{
"type": "Manager",
"name": "Bob",
"phone": "9876543210"
},
{
"type": "Developer",
"name": "Charlie",
"laptop": "MacBook Pro"
}
]
и я это делаю

Код: Выделить всё

var jsonFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Employees.json");
var employeesContent = File.ReadAllText(jsonFilePath);

var jsonSerializerOptions = new JsonSerializerOptions();
jsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
var employees = JsonSerializer.Deserialize(employeesContent, jsonSerializerOptions);
А свойство Type внутри класса Сотрудник всегда имеет значение null, как показано на снимке экрана ниже.
Изображение

Пожалуйста, помогите мне, что мне не хватает.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... nator-prop
Ответить

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

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

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

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

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