Помимо решений Gama11, есть еще один вариант: использовать макросы! ;)
compiletime haxelib имеет точную функцию макросъемки, которая считывает файл JSON в качестве объекта во время компиляции:
var jsonObject = CompileTime.parseJsonFile("test.json");
source code of parseJsonFile
очень просто, и я рекомендую прочитать его, чтобы узнать, как Haxe макросы Работа. Для удобства ознакомьтесь с соответствующими частями:
macro public static function parseJsonFile(path:String):ExprOf<{}> {
var content = loadFileAsString(path);
var obj = try Json.parse(content) catch (e:Dynamic) {
haxe.macro.Context.error('Json from $path failed to validate: $e', Context.currentPos());
}
return toExpr(obj);
}
static function loadFileAsString(path:String) {
try {
var p = Context.resolvePath(path);
Context.registerModuleDependency(Context.getLocalModule(),p);
return sys.io.File.getContent(p);
}
catch(e:Dynamic) {
return haxe.macro.Context.error('Failed to load file $path: $e', Context.currentPos());
}
}
static function toExpr(v:Dynamic) {
return Context.makeExpr(v, Context.currentPos());
}