Код: Выделить всё
public class Person
{
public int Id { get; set; }
public required string Name { get; set; }
}
Код: Выделить всё
var jsonString = @"
[
{ ""Id"": 1, ""Name"": ""name1"" },
{ ""Id"": 2, ""Name"": ""name2"" },
{ ""Id"": 3, ""NameX"": ""name3"" },
{ ""Id"": 4, ""Name"": ""name4"" },
{ ""Id"": 5, ""Name"": ""name5"" }
]
";
List people = JsonSerializer.Deserialize(jsonString) ?? [];
Console.WriteLine(people.Count);
Конечно, это приводит к ошибке во время выполнения. Можно обернуть Deserialize в try-catch, но тогда в моем массиве People будет 0 человек.
Это это, конечно, упрощение ситуации, которая у меня есть, в моем случае я получаю json из внешнего источника. (Предположим, в этом примере невозможно пропустить обязательный атрибут для строки Name)
Как я могу изменить этот код, чтобы у меня фактически был TryDeserialize ? Я хотел бы проанализировать каждый правильный объект и пропустить (и записать, если это возможно) все неправильные объекты? Чтобы в моем последнем массиве людей было 4 человека (идентификаторы 1,2,4,5)?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ment-fails