Резюме для программиста
Вот так всё работает.
Бывшие проблемы:
1. Я не понял, что в джейсонке что, поэтому неправильно назвал свойство-коллекцию.
2. Для МСовского десиреалайзера нужно добавить опцию игнора написания большие-маленькие буквы. С ньютонсовтовским и так всё работает.
3. С защищёнными сеттерами не работает. Оно и понятно - как сериалайзер присвоит свойство, если его сеттер снаружи недоступен? Но на интервью я до этого не додумался.
было
public class Item { public string Prop1 { get; protected set; } public string Prop2 { get; protected set; } public string Desсription { get; protected set; } } public class Items { public List<Item> Items { get; set; } }
стало
public class Item { public string Prop1 { get; set; } public string Prop2 { get; set; } public string Description { get; set; } } public class ItemsCollection { public List<Item> Items { get; set; } } JsonSerializerOptions options = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }; var itemCollection = JsonSerializer.Deserialize<ItemsCollection>(json, options);
(Здешний редактор кода - просто пи...ц!!)
Но вся эта десериализация фигня. Я писал, что там бы ещё с тривью парился. На WPF для этого специально модель пишешь. Я по этой статье у Джоша делал
Simplifying the WPF TreeView by Using the ViewModel Pattern - CodeProject
Что там для Форм писать - не знаю. И как заполнить тривью в формах тоже не знаю. А изучать во время интервью - понятно, что гиблое дело. Я при них эту ссылку открыл и начал там читать, код копировать, но потом запнулся на десериализации
TreeView Class (System.Windows.Forms) | Microsoft Docs
Вобщем, что в WPF, что в Формах, я бы за полтора часа всё это не сделал. Пришлось бы повторять и читать статьи. Реально было меньше времени. Минус 5-10 минут на приветствие-подготовку, минус минут 20 на вчитывание в задание и повторные вчитывания, минус минут 5 до конца интервью - попросили закругляться и отправить что сделал.
Я просто не понял, что в джейсоне что есть.
-----
Хи-хи...
Помнится где-то в соседней ветке ты говорил как просто все при работе с джисоном...
Я даже не смотрел что именно там есть...
Вообще не смотрел.
И сгенерированный код не смотрел.
Даже не думал смотреть - ограничение по времени не позволяет тратить время на смотрение.
банальнейшая вещь.
-----
Разумеется. Как и все глупости у чела без практического опыта.
И у тебя, кстати, не вполне ошибка - были бы аттрибуты и конструктор - все бы работало и с защищенными пропертями.
Помнится где-то в соседней ветке ты говорил как просто все при работе с джисоном...
Так оно реально просто. Вот щас узнал как - всё просто, оказывается. Там ещё есть несколько сложных тем - всякие коллекции в коллекциях и т.д. Но тоже раз сделал - и всё сразу просто.
Просто если вы это постоянно делаете, то просто. ))
банальнейшая вещь.
-----
Разумеется. Как и все глупости у чела без практического опыта.
И у тебя, кстати, не вполне ошибка - были бы аттрибуты и конструктор - все бы работало и с защищенными пропертями.
Я всю эту фигню раньше делал. Я сказал, что подсматривал в том числе в своих старых проектах. Только формы я делал - лет 10 назад, а парсинг джейсона - лет 5. Считай, заново всё изучать надо. Но стоит один раз сделать - всё снова легко.
Атрибуты и прочее - это уже сложнее. Это если у вас есть моделька, сделанная по правилам вашей бизнес-модели, с инкапсуляцией и прочим, то надо расставить атрибуты. А если тупо какой-то DTO, то всё публичным делаешь и всё.
Короче, у меня ещё два приглоса на место. В одно я не хочу, но надо из-за джобцентра, в другое... блин, тоже не очень хочется - там вместо Форм Вижуал Бейсик 6, и кроме как на машине хрен подъедешь. И ехать под Нюрнберг - это от меня 30 км где-то.
В этой стране нормальные места вообще есть? ))
Только формы я делал - лет 10 назад, а парсинг джейсона - лет 5.
А нет, вру. С джейсоном и ньютонсофтовской либой на своём Юнити проекте всего несколько месяцев назад работал. Только я сначала сериализовал свой граф объектов, а потом обратно десериализовал. Т.е. я незнакомый джейсон не парсил. А незнакомый я действительно лет 5 назад только парсил.
С защищёнными сеттерами не работает. Оно и понятно - как сериалайзер присвоит свойство, если его сеттер снаружи недоступен? Но на интервью я до этого не додумался.
по мне так это очень серьёзная ошибка.
причём в WPF оно ЕМНИП так же - все свойства VM, к которым View должна иметь доступ, должны быть с публичным сеттером.
сколько вообще нормально делать компонент? Скажем, вот подобный же - тривью, сбоку подробности (типа master-detail, как я понял), добавление элемента в попапе, наполнение - из джейсона. Скажем, в день четыре таких таски зыкрывать - за 6 часов - нормально?нет, это много
Ты такую будешь одну закрывать, потому что 4 раза будешь останавливаться из-за неполноты вводных данных, чтобы спросить заказчика
И 10 раз тебе позвонит заказчик, чтобы спросить что-то другое.
Первую такую, да ещё на фактически новом для меня UI-фреймворке (а Формы это для меня теперь новинка - после 8 лет с WPF), я буду вщщбще наверное 2-3 дня закрывать. А вторую и следующие может и за день.
Случаи у нас вроде как одинаковые.
Разница:
- у меня - заработало с полутыка то с чем Я не работал;
- у тебя - НЕ заработало то с чем ты до этого работал.
Я мог бы объяснить - почему - так, но для тебя оно бесполезно...
Вы просто нашли сервис, который вам сгенерил модель. Как оно работает вы не знаете. Это всё равно что со Stackoverflow скопировать бездумно. Челы, которые на ваш экран смотрят, это понимают. Если подобного сервиса не найдётся - будете так же тупить, как я.
Но вся эта десериализация фигня. Я писал, что там бы ещё с тривью парился. На WPF для этого специально модель пишешь. Я по этой статье у Джоша делал
Simplifying the WPF TreeView by Using the ViewModel Pattern - CodeProject
Кстати, с этой моделью для тривью из статьи я лет 5-6 назад делал на WPF тестовое ещё в России. Там всё вообще отлично получилось. Только когда пригласили на интервью, нашли на моём сайте одинаковые айдишники у тегов, сгенеренные в цикле (это был мой первый сайт, и я налажал), и услышали, что я джаваскрипт не люблю. Ну, вобщем, не взяли.
Короче, это задание не выполнил бы всё равно. Если такие не делаешь постоянно, то шансов нет.
Там ещё человек что-то подсказывал. Мне вообще вобщем-то помогали. Даже на мои вопросы отвечали. Но я из подсказок процентов 20-30 только улавливал - и связь плохая, и немецкий я не очень понимаю, и башка своими мыслями занята.
Вот щас узнал
-----
Тебе еще раз сказать что "узнавать" надо было ДО?
У тебя проблемы именно по тому что ты считаешь что уже изучил все необходимое в достаточной мере...
Там ещё есть несколько сложных тем
-----
А они точно сложные?
Я вот как-то не нашел сложностей связанных с ЖИСОНом...
Может потому, что когда изучал СОАП не ограничился вызовами методов, а потрудился над тем, чтобы изучить процесс сериализации/десериализации?.. Ну да - время тратил, ну да - на не совсем нужное тратил... А вот поменялось почти все и как-то пофиг - использовал изученное и все получилось...
Не понимаешь?
лет 10 назад
------
Я вообще не работал с ЖИСОНом...
всё снова легко
------
пока не забудешь как именно сериализовать/десериализовать... ЖИСОНа... или пока не случится невозможное - поменяют формат передачи данных... ну хотя бы на CSV... а тогда - все - катастрофа полная - надо на курсы идти чтобы научили как это все обрабатывать... пипец...
Тебе еще раз сказать что "узнавать" надо было ДО?
У тебя проблемы именно по тому что ты считаешь что уже изучил все необходимое в достаточной мере...
Это тоже всё херня. Всё знать не будешь. Пока будешь учить одно, другое забудешь. На первую работу (в тот самый институт) боялся пойти год - всё готовился, учил. А толку? Когда таки пришёл и взяли - первое что сказали делать, как раз то, что я не учил и не знаю. Короче, учил на месте. А мне ребята, которые там раньше работали, так и сказали - фигли учить там, иди работай, на месте выучишь. И они правы оказались.
Оно и понятно - как сериалайзер присвоит свойство, если его сеттер снаружи недоступен?
----
Ну а если Я умудряюсь что-то присваивать приватному сеттеру и делаю это из другой сборки?
Все, разрыв шаблона и медленная смерть...
Бывшие проблемы:
-----
1. ты (опять) показал себя долбоклювом, не знающим как быстро получить нужное.
2. см п.1. - потому как для сгенерированного класса абсолютно пофиг - там регистр согласован.
3. см п.1. - потому как невтоновский инстанциатор пользует помеченный конструктор и ему пофиг на свойства.
Хорошо что хоть домашнюю работу начинаешь делать... плохо что все еще постфактум...
за полтора часа всё это не сделал. Пришлось бы повторять и читать статьи
------
Хи-хи...
Я как-то писал тестовые задачки у мелкомягких.
Делать по-уму - надо раз в пять больше времени, чем выделено на все...
Так что послал все-все далеко и писал ТОЛЬКО необходимую часть кода.
Вот тогда времени оказалось вполне достаточно...
Там ещё есть несколько сложных тем
-----
А они точно сложные?
Я вот как-то не нашел сложностей связанных с ЖИСОНом...
Вам может просто кривая джейсонка прийти, там будет не так значок стоять, а эксепшена не будет. Тоже просто null получите и будете думать, в чём причина. Руками валидировать джейсон? Снова требуется помощь зала какого-нибудь сервиса.
Хорошо что хоть домашнюю работу начинаешь делать...плохо что все еще постфактум...
Я вам секрет полишенеля открою. Вы его тоже знаете, но почему-то упорно его игнорируете.
Все - от джуна, до сеньёра, включая и вас, устраиваются на работу почти исключительно потому, что их спросили то, что они более-менее знают, и поэтому им повезло показать себя как-то на интервью.
Исключений в основном 2:
1) по знакомству - вас не проверяют, а и так знают, что вы можете;
2) вы нашли как раз такое место, где требуются только ваши знания, которые вы как раз долбите уже много лет и только их - т.е. любые вопросы в этой узкой области у вас от зубов отскакивают. Вобщем, это крайне маловероятный вариант.
Все остальные кидают кости и играют в угадай мысли интервьюера. Потому учить что-то впрок, не используя, или, того хуже, брать максимальный охват тем, забивая свою голову неглубокими знаниями - практически бесполезное занятие.
Я приводил в пример видос с собесом чела, который себя уже давно сеньёром считает. Его собесил другой сеньёр. Чел не ответил на половину вопросов. Причём не просто не ответил, а гнал какую-то пургу - по мнению собеседующего. Но собеседующий сказал, что возьмёт его, потому что они знакомы и он знает, чего от него ожидать.
Та же хня с решением задачек на всяких сайтах. Если вы их не решали, и не просто не решали, а не тренировались довольно долгое время их решать - вы скорее всего просто пролетите. И пофиг, сеньёр вы или джун. Нужно ли срочно бежать и начинать решать эти задачки? А как же сериализация джейсонов? А асинки кто повторять будет? Индексы в базах данных? Нет, особенности наследования стилей в XAML всё же важнее. Или может сначала каверзные вопросы по наследованию в ООП в C#? Только сразу после тонкостей освободжения ресурсов в Дотнете. И ещё в 100 раз больше тем.
А потом приходит чел и говорит, что ты лох и не хочешь изучать новое, потому что эти в сто раз больше тем ты поднял только в одном стеке. А надо ещё - Джаву, Дельфи, джаваскрипт, Вижуал Бейсик и прочую шнягу, которую кому-то взбрело в голову смешать и написать в вакухе.
"Кольщик, наколи мне купола.." )))
Как оно работает вы не знаете.
------
А мне надо знать?
По заданию, надо десериализовать что-то, с чем Я никогда не работал.
Как Я это сделаю - руками, Студией, сторонним сервисом - никого не волнует.
Сделано? Работает? Уложился? - Ок...
будете так же тупить, как я
------
Тупить Я буду, если, например, скакнет давление...
Над незнакомой задачей Я тупить не буду - Я ее декомпозировать буду.
На куски, которые могу реализовать.
И замокаю то, что не знаю, не умею сделать.
Сделаю что могу - буду смотреть как решить не сделанное.
В твоем случае - не могу десериализовать за пару минут и не вижу решения в 5 минут - в ручную напишу заполнение и буду заниматься отображающей частью.
Над незнакомой задачей Я тупить не буду - Я ее декомпозировать буду.
На куски, которые могу реализовать.
И замокаю то, что не знаю, не умею сделать.
Сделаю что могу - буду смотреть как решить не сделанное.
В твоем случае - не могу десериализовать за пару минут и не вижу решения в 5 минут - в ручную напишу заполнение и буду заниматься отображающей частью.
Вы не заметили, как уже после второй строчки с той стороны попрощались и завершили звонок?
Вы либо знаете и умеете всё, что нужно, сразу и быстро, либо до свидания.
может просто кривая джейсонка прийти
-----
Так же как CVS, XML, XHTML...
Да регулярно приходит такое с клиентов - поменяли девочку - новая вместо АСКИИ шлет в УТФ-16... или вообще ворд-док вместо CSV... и объяснить, что CSV открытый Экселем надо сохранять как CSV, а не эксел-док - никак...
и чо? Обычное дело и обычная обработка...