Сохраняем JSON в LibGDX
Опубликовано 24 February 2016 в Java
Предыдущую неделю просидел дома. Из-за высокой температуры особо на рабочих задачах сконцентрироваться шансов не было. Но вот сторонними проектами удалось позаниматься. В очередной раз порадовался связке LibGDX и Kotlin.
Задачка такая: прочитать список объектов из JSON. Я уже приготовился писать много строк кода. Оказалось, что инструменты чтения JSON уже встроены в LibGDX. Это немного странно. Я ожидал, что для этой задачи потребуется сторонняя библиотека. Хотя с другой стороны, скин для UI описывается JSON, так что по сути разработчики LibGDX вытащили используемые хелперы в публичный API.
На Котлин получается такой код для чтения списка в массив:
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 отлично подходит для создания сейвов. Нужно только поверху навернуть шифрование (иначе игроки будут портить сейвы, а ловить потом такие ошибки очень сложно).
Возник вопрос? Мне всегда можно написать в Twitter: avkorablev