这适用于游戏应用程序。 在我的游戏中,我想在我的数据库的单个字段中保存对玩家的特殊效果。我知道我可以放一个参考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:"+...
答案 0 :(得分:7)
序列化:
JSON.stringify(effects);
反序列化:
JSON.parse(effects);
答案 1 :(得分:2)
将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)