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

标签 c# .net json.net deserialization non-nullable

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

相关文章:

c# - 寻找显示批处理文件输出的 C# WinForms 应用示例

c# - 从 SQL Server 数据库中插入和选择日期

.net MAUI 无法看到 iOS 方法和属性,因为它的状态为禁用

c# - 如何反序列化其中包含无效字段名称的 JSON 对象

c# - 如何将 IExcelDataReader 值转换为字符串数据类型

c# - 在 Visual Studio 窗口窗体中的面板上使用不透明度有什么技巧吗?

.net - 数据服务抛出神秘异常 : "Media type requires a ' /' character"

asp.net-mvc-3 - 将 nhibernate 实体序列化为 json 错误 : Cannot serialize a Session while connected

json - 使用 JSON.NET 序列化记录类型中的 F# 选项字段时出现意外属性

c# - INotifyPropertyChanged 绑定(bind)和跨线程错误