0

これはゲームアプリケーション用です。私のゲームでは、プレイヤーの特殊効果をデータベースの 1 つのフィールドに保存したいと考えています。参照IDを入れて別のテーブルを作成するだけでよいことはわかっていますが、そのオプションをテーブルから外していません。編集:(追加情報)これは、ブラウザではなくノード内のサーバー用です。

私がデータを保存することを考えていた方法は、次のようにJavaScriptオブジェクトです。

effects={
           shieldSpell:0,
           breatheWater:0,
           featherFall:0,
           nightVision:0,
           poisonResistance:0,
           stunResistance:0,
           deathResistance:0,
           fearResistance:0,
           blindResistance:0,
           lightningResistance:0,
           fireResistance:0,
           iceResistance:0,
           windResistance:0}

それを文字列として保存し、effects=eval(effectsString) を使用して使用するのは簡単なようです。文字列にする簡単な方法はありますか、それとも次のようにする必要がありますか?

effectsString=..."nightVision:"+effects.nightVision.toString+",poisonResistance:"+...
4

4 に答える 4

7

そのようにシリアライズします:

JSON.stringify(effects);

そのように逆シリアル化します。

JSON.parse(effects);
于 2012-08-07T14:36:17.243 に答える
2

JSON.stringifyを使用する

これは JS オブジェクトをJSONに変換します。その後、 JSON.parseで簡単に逆シリアル化できます。クロスサイト スクリプティングevalを誘っているため、この方法は使用しないでください。

//Make a JSON string out of a JS object
var serializedEffects = JSON.stringify(effects);
//Make a JS object from a JSON string
var deserialized = JSON.parse(serializedEffects);
于 2012-08-07T14:36:59.207 に答える
0

これが私がこれまでに思いついたものであり、このソリューションの欠点が何であるかを考えています。

        effectsString="effects={"
        for (i in effects){
           effectsString=effectsString+i+":"+effects[i]+","
        }
        effectsString=effectsString.slice(0,effectsString.length-1);
        effectsString=effectsString+"}"

次に、オブジェクトを作成します

eval(effectsString)
于 2012-08-07T14:47:23.663 に答える
0

JSON parse と stringify は、このタイプのストレージに使用するものです

var storeValue = JSON.stringify(effects); //stringify your value for storage
// "{"shieldSpell":0,"breatheWater":0,"featherFall":0,"nightVision":0,"poisonResistance":0,"stunResistance":0,"deathResistance":0,"fearResistance":0,"blindResistance":0,"lightningResistance":0,"fireResistance":0,"iceResistance":0,"windResistance":0}"
var effects = JSON.parse(storeValue);  //parse back from your string
于 2012-08-07T14:37:41.067 に答える