这是针对游戏应用程序的。在我的游戏中,我想在数据库的单个字段中保存玩家的特殊效果。 我知道我可以放一个引用 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:"+...
像这样序列化:
JSON.stringify(effects);
像这样反序列化:
JSON.parse(effects);
使用 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);
JSON 解析和字符串化是我用于这种类型的存储的
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
的,只是知道这个解决方案的缺点是什么。
effectsString="effects={"
for (i in effects){
effectsString=effectsString+i+":"+effects[i]+","
}
effectsString=effectsString.slice(0,effectsString.length-1);
effectsString=effectsString+"}"
然后使对象只是
eval(effectsString)