我想在反序列化后验证 Json 代码。
例如,如果我有...
using Newtonsoft.Json;
...
public Car
{
public int Year{ get; set; }
public String Make{ get; set; }
}
...
JsonConvert.DeserializeObject<Car>(json)
我想验证年份是 < 2017 && >=1900
,(例如)。
或者也许确保 Make 是一个非空字符串(或者它是一个可接受的值)。
我知道我可以添加 Validate()
在反序列化之后键入函数,但我很好奇是否有一种方法可以与 JsonConvert.DeserializeObject<Car>(json)
同时执行此操作
最佳答案
可能最适合这项工作的工具是 serialization callback
只需创建一个 Validate
方法并为其添加一个 [OnDeserialized]
属性即可:
public Car
{
public int Year{ get; set; }
public String Make{ get; set; }
[OnDeserialized]
internal void OnDeserializedMethod(StreamingContext context)
{
if (Year > 2017 || Year < 1900)
throw new InvalidOperationException("...or something else");
}
}
关于c# - 调用 DeserializeObject<Object>( ... ) 时验证 Json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42283858/