2016-03-23 5 views
3

私の理解では、JSON文字列はXMLによく似た情報をパッケージ化する方法でした。JSON文字列は何に使用できますか?

これは非常にスタック交換質問 などで流通いるものもあります:What is JSON and why would I use it?

はしかし、私が遊ぶゲームのための最近のボットは、実行するアクションの「スクリプト」としてJSONファイルを取りました。このようにして、ボットのユーザは、ボットが実行する予定のアクションをカスタマイズすることができました。

これはjsonのものが何だったのか、彼らが達成できるものの私の精神的モデルに違反しているようです。私の現在の疑念は、これらの "スクリプト" jsonファイルを送信する情報のパッケージとして使用するのではなく、代わりにボットによって内部的に処理され、その後 "スクリプト"を実際のアクションに変換することです。

jsonが何であるか誤解した場合は、私に教えてください。

+1

それはあなたがする場合は、容易に譲渡することができ、データ、ワイヤフォーマットをフォーマットするだけの方法です。特別なことは何もありません。ゲームがそのデータを取ってそれについて何かすることが特別なものにならないからです。 –

答えて

2

JSONは単なる構造体であり、文字通り "JavaScript Object Notation"、http://json.org/です。ボット

によって内部で処理さ

は何が起こっているのか、基本的です。

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);
<div id="bot">:)</div>

関連する問題