JSON字符串可以用于什么?

时间:2016-03-23 23:45:23

标签: json

据我所知,JSON字符串是打包信息的方法,就像xml一样。

这也是堆叠交换问题中的高度流传 例如:What is JSON and why would I use it?

然而,最近我玩的游戏机器人将json文件作为"脚本"要执行的操作。通过这种方式,机器人的用户能够自定义机器人预期执行的操作。

这似乎违反了我对json的理解以及他们可以完成的事情。我目前的怀疑是,而不是使用这些"脚本" json文件作为要发送的信息包,它们由机器人在内部处理,然后翻译我们的脚本"进入实际行动。

如果我误解了json是什么,请告诉我。

1 个答案:

答案 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;
&#13;
&#13;