据我所知,JSON字符串是打包信息的方法,就像xml一样。
这也是堆叠交换问题中的高度流传 例如:What is JSON and why would I use it?
然而,最近我玩的游戏机器人将json文件作为"脚本"要执行的操作。通过这种方式,机器人的用户能够自定义机器人预期执行的操作。
这似乎违反了我对json的理解以及他们可以完成的事情。我目前的怀疑是,而不是使用这些"脚本" json文件作为要发送的信息包,它们由机器人在内部处理,然后翻译我们的脚本"进入实际行动。
如果我误解了json是什么,请告诉我。
答案 0 :(得分:2)
JSON只是一个结构,字面意思是" JavaScript Object Notation",http://json.org/。
由bot内部处理
基本上是正在发生的事情。
将json字符串解析为一个对象,并根据该对象的值做出反应。它没有涉及脚本。但是,有些值可能是字符串中的字符串,可以在JavaScript中使用eval
来执行。
我怀疑eval并没有以这种方式使用,并且机器人只是简单地读取键值对作为例如moveright:5 feet
的指令。
这是一个非常快速示例,它在json中获取预期的命令,然后在某种过程中执行它们。实施是基本的,只是一个概念证明。
var json = '{ "actions": [ { "speak": "hello world" }, { "color" : "red" } ]}';
var obj = JSON.parse(json);
var i = 0;
var bot = document.querySelector("#bot");
var actions = {
speak : function(text){ bot.innerText = text; },
color : function(c){ bot.style.color = c; }
};
function act(action){
for(var key in action){
var value = action[key];
actions[key](value);
}
if(i <= obj.actions.length)
setTimeout(function(){
act(obj.actions[i++]);
},500);
}
setTimeout(function(){
act(obj.actions[i++]);
},500);
&#13;
<div id="bot">:)</div>
&#13;