Start Debugging
2023-09-03 Обновлено 2023-11-05 dotnetdotnet-8 Edit on GitHub

.NET 8 десериализация в свойства только для чтения

Узнайте, как в .NET 8 десериализовать JSON в свойства только для чтения без сеттера с помощью JsonObjectCreationHandling или JsonSerializerOptions.

Начиная с .NET 8 можно десериализовать в свойства, у которых нет аксессора set. Это поведение можно включить через JsonSerializerOptions или для конкретного типа с помощью атрибута JsonObjectCreationHandling.

Через атрибут JsonObjectCreationHandling

Пометьте свой тип атрибутом System.Text.Json.Serialization.JsonObjectCreationHandling, передав нужную опцию параметром.

[JsonObjectCreationHandling(JsonObjectCreationHandling.Populate)]
public class Foo
{
     public int Bar { get; }
}

Через JsonSerializerOptions

Установите свойство JsonSerializerOptions.PreferredObjectCreationHandling в Populate и передайте options в метод Deserialize.

new JsonSerializerOptions 
{ 
    PreferredObjectCreationHandling = JsonObjectCreationHandling.Populate
};

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад