Имеет ли новый `System.Text.Json` обязательный атрибут свойства? - PullRequest
0 голосов
/ 18 октября 2019

Я пролистал MS документы , но не могу найти атрибут, эквивалентный NewtonSoft JsonPropertyRequired .

Что я ищу для этого:

public class Videogame
{
    [JsonProperty(Required = Required.Always)]
    public string Name { get; set; }
}

Я просто что-то упустил или этот уровень проверки не существует в библиотеке Microsoft?

1 Ответ

0 голосов
/ 18 октября 2019

Не по состоянию на .NET core 3.0 . Поддерживаются только следующие значения:

JsonConverterAttribute
JsonExtensionDataAttribute
JsonIgnoreAttribute
JsonPropertyNameAttribute

К сожалению, даже пользовательский преобразователь не будет работать, поскольку нулевые значения пропускают вызовы методов чтения и записи.

public class Radiokiller
{
   [JsonConverter(typeof(MyCustomNotNullConverter<string>))] 
   public string Name { get; set; }  
}
public class MyCustomNotNullConverter<T> : JsonConverter<T>
{
    public override bool CanConvert(Type typeToConvert) => true;

    public override T Read(...)
    {
        //Not called for nulls
    }

    public override void Write(...)
    {
        // Not called for nulls
    }
}
...