Я пытаюсь десериализовать некоторые объекты JSON с помощью Json.NET. Однако я обнаружил, что при десериализации объекта, который не имеет свойств, которые я ищу, не возникает никакой ошибки, но при доступе к свойствам возвращается значение по умолчанию для свойств. Важно, чтобы я мог определить, когда я десериализировал неправильный тип объекта. Пример кода:
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, а затем проверять параметр с помощью поиска значения ключа, но кодовая база, в которой я работаю, использует приведенный выше шаблон, и я хотел бы сохранить его согласованным, если это возможно.