2016-03-23 11 views
3

Nach meinem Verständnis waren JSON-Strings Möglichkeiten, um Informationen zu paketieren, ähnlich wie XML.Wofür können JSON-Zeichenfolgen verwendet werden?

Dies ist auch das, was hoch in den Stapel-Austausch-Fragen in Umlauf ist zB: What is JSON and why would I use it?

jedoch ein kürzliches bietet für ein Spiel, das ich nahm json-Dateien als „Skripte“ von Aktionen spielen auszuführen. Auf diese Weise waren die Benutzer des Bot in der Lage, Aktionen anzupassen, die der Bot ausführen sollte.

Dies schien mein mentales Modell zu verletzen, was Jsons waren und was sie erreichen konnten. Mein gegenwärtiger Verdacht ist, dass diese "Skript" -JSON-Dateien nicht als Paket von zu sendenden Informationen verwendet werden, sondern intern vom Bot verarbeitet werden, der dann unsere "Skripte" in reale Aktionen übersetzt.

Bitte erleuchten Sie mich, wenn ich missverstanden habe, was JSON ist.

+1

Es ist nur ein Weg, um Daten zu formatieren, die leicht übertragbar, ein Draht-Format, wenn man so will sein können. Es gibt nichts besonderes daran. Nur weil das Spiel in der Lage ist, diese Daten aufzunehmen und etwas dagegen zu tun, macht es nichts Besonderes. –

Antwort

2

JSON ist nur eine Struktur, buchstäblich ist es "JavaScript Object Notation", http://json.org/.

intern vom Bot verarbeitet ist

im Grunde, was los ist.

Die JSON-Zeichenfolge wird in ein Objekt geparst, und der Bot reagiert auf die Werte dieses Objekts. Es ist kein Scripting involviert. Es ist jedoch möglich, dass einige der Werte wortwörtlich Skript in einer Zeichenfolge sind, die in JavaScript mit eval verwendet werden kann, um auszuführen.

Ich vermute, dass Eval nicht auf diese Weise verwendet wird, und dass der Bot einfach Schlüsselwertpaare liest, um als Anweisung zu nehmen, zum Beispiel moveright:5 feet.

Hier ist ein sehr schnelles Beispiel der erwarteten Kommandos in Json und dann Ausführen von ihnen in irgendeiner Art von Prozess. Die Implementierung ist grundlegend, nur ein Beweis des Konzepts.

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>

Verwandte Themen