На этом шаге мы рассмотрим, как можно распарсить полученные данные.
Веб-служба, возвращающая характеристики персонажа, доступна по ссылке https://chargen-api.herokuapp.com.
В ответ на запрос веб-служба возвращает список из характеристик персонажа, таких как race, name, dex, wis и str, разделенных запятыми, например такое: halfling,Lars Kizzy,14,13,8
Ваше первое задание - преобразовать строку с характеристиками персонажа, возвращаемую веб-службой, в экземпляр CharacterData который можно отобразить в UI.
Давайте начнем. Откройте CharacterGenerator.kt в AndroidStudio и объявите функцию преобразования fromApiData().
. . . . object CharacterGenerator { data class CharacterData(val name: String, val race: String, val dex: String, val wis: String, val str: String) : Serializable . . . . fun fromApiData(apiData: String): CharacterData { val (race, name, dex, wis, str) = apiData.split(",") return CharacterData(name, race, dex, wis, str) } }
Рис.1. Добавление функции fromApiData() (CharacterGenerator.kt)
Функция fromApiData() принимает строку со значениями, полученную от веб-службы, разбивает ее по запятым и записывает результаты в новый экземпляр CharacterData.
Проверьте fromApiData(), вызвав ее нажатием кнопки GENERATE. Для примера передадим фиктивные данные.
private const val CHARACTER_DATA_KEY = "CHARACTER_DATA_KEY" class MainActivity : AppCompatActivity() { . . . . override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_main) val binding = ActivityMainBinding.inflate(layoutInflater) val view = binding.root setContentView(view) characterData = savedInstanceState?.characterData ?: CharacterGenerator.generate() binding.generateButton.setOnClickListener { characterData = CharacterGenerator.//generate() fromApiData("halfling,Lars Kizzy,14,13,8") displayCharacterData(binding) } displayCharacterData(binding) } . . . . }
Рис.2. Тестирование функции fromApiData() (MainActivity.kt)
Запустите Samodelkin в эмуляторе, чтобы убедиться, что все работает. Нажмите кнопку GENERATE. Вы увидите в UI тестовые данные, переданные в функцию преобразования (рисунок 3).
Рис.3. Отображение тестовых данных
На следующем шаге мы рассмотрим извлечение оперативных данных.