На этом уроке мы десериализируем JSON с использованием сторонней библиотеки от Newtonsoft. Напишите, что ещё вы добавите в эту программу.
Дата отправки отчёта:
17 февраля 2018 г.
Задание выполнено: за
6 дней 17 час. 2 мин.
Чему научился:
Сделал под Андроид, так что я теперь умею делать простенькие мобильные приложения :) Кроме того, что эта программа под Андроид, я ещё немного отступил от предложенного в уроке:
1) По возможности сделал классы, методы и поля статичными - кроме сохраняемых значений и передачи данных в основном тут идёт просто обработка и возврат значений. Да и хотел потренироваться со статичными классами.
2) Сделал ввод ключа в отдельном окне настроек - хотел понять, как работать с несколькими окнами в Андроиде и возвращать из них данные.
3) Сделал сохранение ключа в настройках приложения, чтобы не вводить его заново, да и надо это тоже уметь :)
4) Добавил выбор из какой валюты в какую конвертировать, а всё конвертирование сделал через decimal - оно как раз для финансовых данных :)
5) Соответственно, строка запроса к сайту формируется в StringBuilder с подстановкой из какой валюты в какие - запрашиваются сразу несколько валют в какие будет конвертироваться, чтобы не делать лишних запросов. Полученный JSON парсится и сохраняется в Dictionary по ключу из какой валюты конвертируется.
6) Веб-запрос формируется, если ключ исходной валюты отсутствует в Dictionary или имеющийся там Timestamp более чем на 2 часа отстаёт от текущего, иначе берётся из Dictionary.
7) Чтобы сделать программу более гибкой и не плодить кучу шаблонов для разных вариантов отпарсенного JSON хотел сначала работать с ним как с динамическим объектом через отражения с формированием запроса поля, составленным из строки GetField(from (например "USD") + to (например "RUB")), правда оказалось, что с JObject можно работать как с Dictionary, так что потренироваться с Reflection не удалось, но возможность составлять запрос по ключу из строк пригодилась :)
8) Курс для выбранных в данное время валют сохраняется, чтобы далеко не ходить при каждом событии ввода цифры :)
9) Так как бесплатный тарифный план на apilayer.net позволяет конвертировать только из USD, то при проверке поля success в ответе сайта подставляется курс 1.00. Но, при апгрейде тарифа всё теоретически должно само заработать и для других исходных валют. Можно конечно сделать в таком случае пересчёт валют через доллар, но это сделаю если вдруг почту засыпят требованиями выложить программу в PlayMarket :))))) тогда и интерфейс дошлифую :)))
Что было сложным:
Сложным было заставить эмулятор коннектиться к сети, но в результате он сам заработал как надо. Не мог получить доступ к полям через Reflection, а оказалось, что оно и не нужно :(
В пункте 9 имеется в виду, что если исходная валюта отлична от USD, то на бесплатном тарифе в поле success будет false и в таком случае подставится курс 1.00.
Ну все здорово получилось. Поздравляю с успехом и началом мобильной разработка.
Отчёт оценивали: 6203. Николай Миролюбов+117093. jin+1459. Сергей Сергеевич+116533. Андрей Шевченко+16452. Кирилл Шмойлов+13922. Александр+110558. Иван Воронин+19156. Dimon+110167. Игорь+17119. Новопашин Владимир+117240. Андрей Гришагин+116396. Денис+19913. vip+116496. Pavlin+116459. Protos+1Посетитель+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Интересный урок. Хотелось бы попробовать реализовать хотя бы обратный расчет из рублей в доллары. Попробую на досуге. Трудности: Сложно все запомнить
Научился: Подключать модуль Newtonsoft. Десериализации json в созданный для этого класс.
Все круто. Очень полезный урок! Трудности: Пришлось повозиться, чтобы настроить Nuget и подключить Newtonsoft к VS2008