Парсим json в свои классы на Haxe

haxe-logoЦель:  к примеру, у нас есть редактор уровней, который оперирует сложной иерархией классов. Мы хотим сохранить наши уровни со всей сложной иерархией в json и когда необходимо достать из json без лишних телодвижений.

Наши «сложные» классы данных:

 На самом деле никаких велосипедов для этого изобретать не нужно.

Для начала устанавливаем TJson  — это библиотека для комфортной работы с json на Haxe независимо от таргета.

Не забываем подключить библиотеку в проект:

Теперь нам понадобится класс EXTJsonSerialization.hx  — качаем по ссылке и добавляем в проект. (спасибо доброму человеку написавшему его)

Ну вот теперь берем наши «сложные» классы и проверяем, как это работает.

Получаем вот такой json:

Обратите внимание на поле «_explicitType» — оно расставляется в каждом объекте и указывает на его тип, чтобы у нас не возникло проблем при парсинге. Таким образом, иерархия наших классов с данными может быть практически любой.

Обратная магия работает одной строкой:

В итоге, в переменной lvl мы имеем нашу иерархию классов без dynamic’ов и безликих object’ов .

Остается только дописать сохранение файлов, но это уже в другой раз, если кому-то интересно.