将javascript对象保存为字符串

时间:2012-08-07 14:33:29

标签: javascript mysql

这适用于游戏应用程序。 在我的游戏中,我想在我的数据库的单个字段中保存对玩家的特殊效果。我知道我可以放一个参考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 个答案:

答案 0 :(得分:7)

序列化:

JSON.stringify(effects);

反序列化:

JSON.parse(effects);

答案 1 :(得分:2)

使用JSON.stringify

将JS对象转换为JSON。然后,您可以使用JSON.parse轻松地对其进行反序列化。请勿使用eval方法,因为这样会邀请cross-site scripting

//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);

答案 2 :(得分:0)

JSON parse和stringify是我用于此类storatge的方法

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

答案 3 :(得分:0)

到目前为止,我想到的只是想知道这个解决方案的缺点是什么。

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

然后将对象设为

eval(effectsString)