【发布时间】:2020-01-07 05:18:52
【问题描述】:
我一直在编写一些自定义转换器,扩展 Newtonsofts JsonConverter 并偶然发现了一个小问题。假设我在一个类上有两个属性,但它们不能是相同的值。是否可以在转换器中找到另一个属性的值...例如,假设我有一个这样的模型。
我希望能够在 CustomCompareConverter 中检查 Surname 的值,以确保它与 Firstname 的值不同
public class Person
{
[JsonConverter(typeof(CustomCompareConverter), "Surname")]
public string Firstname { get; set; }
public string Surname { get; set; }
}
```
【问题讨论】:
-
您无法在子级的
ReadJson()方法中访问父级的属性,这可能是因为 JSON 对象是 一组无序的名称/值对,因此父级属性可能尚未被读入和反序列化。参见例如How to conditionally deserialize JSON object based on another JSON property?。请考虑在[OnDeserialized]事件中进行验证。这能回答你的问题吗?
标签: asp.net-core asp.net-web-api json.net asp.net-core-2.2