Тёмный

c# с нуля. Урок 8 - парсинг JSON в класс из файла и запись в файл 

c# учимся вместе
Подписаться 3,6 тыс.
Просмотров 10 тыс.
50% 1

Опубликовано:

 

21 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 21   
@andmisul
@andmisul 2 года назад
Тайминг 01:35 - создаем новый проект 02:14 - настраиваем свойства файла (json) проекта 02:40 - создание модели данных 03:48 - генерируем класс из json 04:45 - устанавливаем дополнительный пакет для работы с json 05:33 - настройка атрибутов для полей 06:55 - получаем текст json из файла
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
Спасибо!
@Дмитрийсекрет-н7о
@Дмитрийсекрет-н7о 3 года назад
Классный урок. Спасибо.
@user-hn5km9bo2e
@user-hn5km9bo2e 3 года назад
На здоровье, как говорится
@ashotrustavelyan7498
@ashotrustavelyan7498 2 года назад
классно !!!
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
Удачи!
@spoilka666
@spoilka666 3 года назад
Все понятно, спасибо!
@BTFCHMS
@BTFCHMS 2 года назад
Хороший урок. P.S. Приорал немного с 7:27, эта функция читается как "Комбайн" а не "Комбинэ" :)
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
комбине ближе к рускому понятию комбинировать :)
@redice8928
@redice8928 2 года назад
на 3:36 настоящая магия произошла
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
там ещё для XML есть, если что
@АлексейКарлов-у7о
@АлексейКарлов-у7о 2 года назад
Подскажите такой момент, пожалуйста: я беру общую схему json, студия через специальную вставку создает большой класс с кучей вложенных классов. Как быть, если при части запросов не все экземпляры вложенных классов создаются (их просто нет в ответе сервера) и программа падает. Спасибо.
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
Если это типы int/long/decimal и подобные, то надо их поменять на nullable int? long? decimal? и т.д. Объекты классов по умолчанию могут быть null
@АлексейКарлов-у7о
@АлексейКарлов-у7о 2 года назад
Есть класс: 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о
@АлексейКарлов-у7о 2 года назад
все, я разобрался.
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
@@АлексейКарлов-у7о для других отпишу в строке надо сделать перепроверку на null Console.WriteLine(newCompanyReq.ul.legalAddress.parsedAddressRF.city?.topoValue); если после city поставить ? , то валиться не будет, если city null Когда вы не уверены, что прилетит, то можно хоть после каждого проперти ставить ? - результат будет null без краха программы
@nightkot4917
@nightkot4917 2 года назад
А что делать, если json'ов много, и они все разные? С разными типами данных, и разным их количеством. И неизвестно, когда будут какие?
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
хм. А как это может быть, ну да ладно. Можно пробовать через try-catch делать сериализацию. Можно дополнительно проверять JSON по какому-то полю поиском, то есть если находится в самом JSON поле "field1", то это первый тип, если "field2" - второй и т.д.
@cockroach_eater3
@cockroach_eater3 2 года назад
Капец, доллар по 75...
@user-hn5km9bo2e
@user-hn5km9bo2e 2 года назад
Это много или мало?
@ggvr1299
@ggvr1299 2 года назад
@@user-hn5km9bo2e ну сейчас же ещё меньше
Далее
What’s your height?🩷🙀💚
00:59
Просмотров 4,3 млн
Что такое JSON
7:45
Просмотров 126 тыс.
POST ЗАПРОСЫ - C#
21:23
Просмотров 10 тыс.