Предыдущую неделю просидел дома. Из‑за высокой температуры особо на рабочих задачах сконцентрироваться шансов не было. Но вот сторонними проектами удалось позаниматься. В очередной раз порадовался связке LibGDX и Kotlin.
Задачка такая: прочитать список объектов из JSON. Я уже приготовился писать много строк кода. Оказалось, что инструменты чтения JSON уже встроены в LibGDX. Это немного странно. Я ожидал, что для этой задачи потребуется сторонняя библиотека. Хотя, с другой стороны, скин для UI описывается JSON, так что, по сути, разработчики LibGDX вытащили используемые хелперы в публичный API.
На Kotlin получается такой код для чтения списка в массив:
data class Word(val word: String = "", val translation: String = "")
fun initWords() {
var json = Json()
var list: ArrayList<*> = json.fromJson(ArrayList::class.java, Gdx.files.internal("words.json"))
words = Array(list.size) { i -> json.readValue(Word::class.java, list[i] as JsonValue) }
}
Вообще это API отлично подходит для создания сейвов. Нужно только поверху навернуть шифрование (иначе игроки будут портить сейвы, а ловить потом такие ошибки очень сложно).