【发布时间】:2020-01-20 22:03:09
【问题描述】:
我们正在使用lang::json::IO::writeJSON() 函数将一些数据序列化为 JSON 文件。
在我们尝试存储方法位置之前,这非常有效。
位置包含 < 和 > 字符之间的起始行和列,这显然不是写入 JSON 文件的问题(它被写入为字符串,不尝试解析任何内容)。
当您想将lang::json::IO::readJSON 与存储为字符串的位置一起使用时,问题就开始了。 Rascal 尝试将字符串解析为对象,但失败了。
例如:
rascal>map[str, loc] metrics = ();
map[str, loc]: ()
rascal>metrics["test"] = a;
map[str, loc]: ("test":|project:///rascal/bla.java|(0,0,<0,0>,<1,0>))
rascal>writeJSON(|file:///tmp/test.json|,metrics);
ok
rascal>metrics = readJSON(#map[str, loc], |file:///tmp/test.json|);
|std:///lang/json/IO.rsc|(925,2980,<30,0>,<58,160>): IO("could not parse URI:$.test")
at *** somewhere ***(|std:///lang/json/IO.rsc|(925,2980,<30,0>,<58,160>))
at readJSON(|std:///lang/json/IO.rsc|(3873,30,<58,128>,<58,158>))
有没有更好的方法将loc 实例序列化/反序列化为 JSON 文件?
感谢您的帮助!
【问题讨论】:
标签: rascal