从文件加载JSON对象

时间:2015-05-04 17:21:00

标签: json haxe

我尝试解析文件中包含的JSON对象(在Haxe中),但它无法正常工作。 当我尝试从类中的var解析JSON对象时,它工作得很好但是当JSON在文件中时并非如此,所以我尝试打开文件并获取对象里面。

感谢您的帮助!

3 个答案:

答案 0 :(得分:8)

解析json就像一样简单。您遇到的问题可能是您使用的目标不支持访问系统上的文件(例如浏览器的JS或Flash)。 解决方案是多方面的。如果要加载配置数据,可以使用宏并执行以下操作:

haxe.Json.parse(jsonvar)

您在代码中使用:

class Config {
  // path is relative to where haxe is executed
  macro public static function json(path : String) {
    var value = sys.io.File.getContent(path),
        json = haxe.Json.parse(value);
    return macro $v{json};
  }
}

请注意,在这种情况下,conf在编译时初始化,并且在运行时没有加载。这意味着如果您对var conf = Config.json("myfile.json"); 进行任何更改,则在重新编译之前不会看到它们。

另一种情况是您在运行时加载文件。在这种情况下,解决方案通常特定于您的目标(对于浏览器中的JS,您可能希望进行AJAX调用,对于Neko或OpenFL,您可以直接从系统加载文件,类似于之前解释的内容)。

答案 1 :(得分:1)

TJSON可以处理JSON解析:https://github.com/martamius/TJSON

var myObject = TJSON.parse(sys.io.File.getContent('filename.json'));

答案 2 :(得分:0)

我建议您将来发布代码 - 至少添加更多上下文。

您是否使用JSON parse来解析从文件中读取的字符串?