Я хочу, чтобы Json. NET не удалось десериализовать отсутствующий или неопределенный тип значения - PullRequest
2 голосов
/ 06 августа 2020

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

public class MyObj
{
    public int MyInt { get; set; }
}

static void Main(string[] args)
{
    var jsonString = "{ }";

    var obj = JsonConvert.DeserializeObject<MyObj>(jsonString); // Doesn't throw

    jsonString = "{ \"MyInt\": null }";

    obj = JsonConvert.DeserializeObject<MyObj>(jsonString); // Does throw
}

Я ожидал, что будет параметр, который делает обратное JsonSerializerSettings.MissingMemberHandling, но я не удалось его найти.

Для контекста я использую Json. NET в качестве десериализатора запроса для Azure Function API.

1 Ответ

4 голосов
/ 06 августа 2020

Вы можете использовать атрибут JsonProperty с Required = Required.Always:

public class MyObj
{
    [JsonProperty(Required = Required.Always)]
    public int MyInt { get; set; }
}

From Обязательное перечисление do c:

Всегда .. . Свойство должно быть определено в JSON и не может быть нулевым значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...