我希望 Json.NET 无法反序列化缺失或未定义的值类型

I want Json.NET to fail deserializing a missing or undefined value type

在下面的代码中,我希望两个 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 函数 API.

的请求反序列化器

您可以将 JsonProperty 属性与 Required = Required.Always 一起使用:

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

来自 Required enum 文档:

Always ... The property must be defined in JSON and cannot be a null value.