【发布时间】:2014-04-22 03:56:44
【问题描述】:
我遇到了一个问题,我正在使用的依赖项已设置
[DataMemberAttribute(IsRequired = true)]
但它并没有将它的值从一个点发送到另一个点。
这对他们有用,因为他们使用的是ServiceStack.Text,而不关心DataMemberAttribute。
但我使用的是 Json.net,它会检查此属性并随后失败。
(我正在谈论的依赖项的支持已经承认他们在按要求设置它时出错了。总有一天会修复。但等待的时间太长了。)
如果我创建一个新的序列化程序设置,例如:
new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
在DefaultContractResolver.cs中的方法SetPropertySettingsFromAttributes()中属性仍然设置为Required.AllowNull。
从不会在该方法中检查序列化程序设置,也不会在引发此问题的JsonSerializerInternalReader.EndObject() 中检查:
“在 JSON 中找不到必需的属性 '...'。”
所以:
- 这是 Json.net 中的错误吗?那就是不遵守序列化程序设置?
- 有什么方法可以在不修改源代码的情况下改变这种行为?
提前谢谢你!
【问题讨论】:
标签: json.net