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