Тайминг 01:35 - создаем новый проект 02:14 - настраиваем свойства файла (json) проекта 02:40 - создание модели данных 03:48 - генерируем класс из json 04:45 - устанавливаем дополнительный пакет для работы с json 05:33 - настройка атрибутов для полей 06:55 - получаем текст json из файла
Подскажите такой момент, пожалуйста: я беру общую схему json, студия через специальную вставку создает большой класс с кучей вложенных классов. Как быть, если при части запросов не все экземпляры вложенных классов создаются (их просто нет в ответе сервера) и программа падает. Спасибо.
Есть класс: internal class ReqTest { public string? inn { get; set; } public string? ogrn { get; set; } public string? focusHref { get; set; } public UL? ul { get; set; } public class UL { public Legaladdress? legalAddress { get; set; } } public class Legaladdress { public Parsedaddressrf? parsedAddressRF { get; set; } } public class Parsedaddressrf { [JsonProperty("city", NullValueHandling = NullValueHandling.Ignore)] public City city { get; set; } [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class City { [JsonProperty("topoValue", NullValueHandling = NullValueHandling.Ignore)] public string? topoValue { get; set; } } } для некоторых запросов код ReqTest? newCompanyReq = Newtonsoft.Json.JsonConvert.DeserializeObject(responceReq), затем Console.WriteLine(newCompanyReq.ul.legalAddress.parsedAddressRF.city.topoValue); дает нормальный результат. Но для тех, где в ответе json нет public City, все ломается и пишет ошибку: System.NullReferenceException: Object reference not set to an instance of an object. Как можно игнорировать в том же вызове через Console.WriteLine, подскажите, пожалуйста.
@@АлексейКарлов-у7о для других отпишу в строке надо сделать перепроверку на null Console.WriteLine(newCompanyReq.ul.legalAddress.parsedAddressRF.city?.topoValue); если после city поставить ? , то валиться не будет, если city null Когда вы не уверены, что прилетит, то можно хоть после каждого проперти ставить ? - результат будет null без краха программы
хм. А как это может быть, ну да ладно. Можно пробовать через try-catch делать сериализацию. Можно дополнительно проверять JSON по какому-то полю поиском, то есть если находится в самом JSON поле "field1", то это первый тип, если "field2" - второй и т.д.