检测反序列化对象是否缺少Json.NET中JsonConvert类的字段
我正在尝试使用Json.NET反序列化一些JSON对象。但是我发现,当我反序列化一个没有我正在寻找的属性的对象时,不会抛出任何错误,但是当我访问它们时,会返回属性的默认值。重要的是我能够检测到何时反序列化了错误类型的对象。示例代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Newtonsoft.Json;namespace Json_Fail_Test{ class Program { [JsonObject(MemberSerialization.OptOut)] private class MyJsonObjView { [JsonProperty("MyJsonInt")] public int MyJsonInt { get; set; } } const string correctData = @" { 'MyJsonInt': 42 }"; const string wrongData = @" { 'SomeOtherProperty': 'fbe8c20b' }"; static void Main(string[] args) { var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData); System.Console.Out.WriteLine(goodObj.MyJsonInt.ToString()); var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData); System.Console.Out.WriteLine(badObj.MyJsonInt.ToString()); } }}
该程序的输出是:42 0
我宁愿抛出一个例外来默默地失败。没有办法检测序列化是否找不到参数?
我知道我可以使用Json对象解析数据,然后使用键值查找检查参数,但我所使用的代码库使用上面的模式,如果可能,我希望保持一致。
犯罪嫌疑人X