我正在尝试让我的应用程序将一个json文件转换为一个对象,该对象中也包含函数,但我不知道如何执行此操作。这是我的json文件,不起作用:
{
"draw": function() {
ctx.clearRect(0,0,960,720);
ctx.fillStyle = "#000000";
},
"load": function() {
if (beginning = 0) { erasePrev };
loadHTML('button','level1Button',"position:absolute; top:100px; left:200px;",'LEVEL I','loadLevel(1)',false,false);
loadHTML('a','howtoplayhref',"position:absolute; top:100px; left:100px;",'how to play',false,false,'howtoplay.html');
},
"clear": function() {
removeHTML(level1Button);
removeHTML(howtoplayhref);
}
}
我知道如何加载和解析文件,问题是它不会传递json验证器。
答案 0 :(得分:1)
JSON文件是无逻辑数据表示。您可以拥有包含属性,数组,整数,字符串和布尔值的对象。您不能在文件中存储任何逻辑,因为函数代表的不仅仅是函数内容(例如范围)。 JSON文件的整个想法是易于传输,易于解析和使用。
答案 1 :(得分:0)
你不能把功能放在JSON中。你可以做的是将一个包含函数定义的字符串放入JSON中,然后在该字符串上调用eval()
将其转换为相应的函数。
{
draw: "(function() {
ctx.clearRect(0,0,960,720);
ctx.fillStyle = '#000000';
})"
}
加载JSON后,执行:
var obj = JSON.parse(json_data);
obj.draw = eval(obj.draw);
请注意,函数周围的括号很重要,否则eval
不会将其正确解析为函数表达式。