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

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