在下面的代码中,我希望两个 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 的请求反序列化器。
最佳答案
您可以将 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.
关于c# - 我希望 Json.NET 无法反序列化缺失或未定义的值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63282517/