Сохраняем 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