gpt4 book ai didi

c# - 使用 Json.NET 反序列化 : Requiring a property/key to be present

转载 作者:太空狗 更新时间:2023-10-29 20:56:44 27 4
gpt4 key购买 nike

使用 Json.NET 时要将 JSON 字符串反序列化为对象,我如何要求 JSON stirng 中存在键/属性,但允许 NULL 值?

例如:

假设我有一个类/对象...

[DataContract]
public class Car
{
[DataMember(IsRequired = true)]
public string Vin {get; set;}

[DataMember(IsRequired = true)]
public string Color {get; set;}

public string Description {get; ;set}
}

在上面的示例中,VIN 和 Color 是必需的,如果 JSON 字符串中缺少其中一个,则会抛出异常。但是可以说 Description 属性在反序列化后是否有值是可选的。换句话说,NULL 是一个有效值。有两种方法可以在 JSON 字符串中实现这一点:

1)

{
"vin": "blahblahblah7",
"color": "blue",
"description": null
}

或者2)

{
"vin": "blahblahblah7",
"color": "blue"
}

问题是我不想假设 Description 值应该是 NULL 只是因为 的键/值对被排除在 JSON 字符串之外。我希望 JSON 的发送者明确将其设置为 NULL。如果场景 #2 发生,我想检测它并用错误消息响应。那么我如何要求存在键/值对,但接受 NULL 作为值呢?

如果有帮助,我正在尝试在 ASP.NET Web API 的上下文中解决此问题项目。

最佳答案

呃。我应该多花一点时间在 Json.NET 文档上......

答案是 JsonPropertyAttributeRequired 属性,它是 enum 类型 Newtonsoft.Json.Required

[JsonProperty(Required = Newtonsoft.Json.Required.AllowNull)]
public string Description {get; set;}

关于c# - 使用 Json.NET 反序列化 : Requiring a property/key to be present,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com