我刚开始学习Javascript并试图在同一时间构建应用程序......我认为这是一种很好的学习方式。我正在使用“JavaScript Web应用程序”Alex MacCaw这本书来帮助我。
我陷入了我要将一些字符串序列化为Json的部分。结果应该是这样的:
{"7B2A9E8D...":"{"name":"document","picture":"pictures.jpg","id":"7B2A9E8D..."}"}
但这仅用于测试目的,但它仅输出id记录而忽略其余记录。
以下是我的代码的链接:
https://gist.github.com/2047336
任何帮助将不胜感激。
答案 0 :(得分:0)
这样说:
{"7B2A9E8D...":{"name":"document","picture":"pictures.jpg","id":"7B2A9E8D..."}}
使用{}你正在启动一个对象...如果你输入“{}”它是一个字符串...但由于你在该字符串中有很多双引号,你有语法错误。
更新:
对我来说问题是,目前还不清楚你想要用如此庞大的代码实现什么,这应该只是将对象保存到数组中:)(所以我不知道实际需要更改哪个部分)。如果你想要几个快速提示,这里是:
你有这种代码的和平:
var Event = Model.create();
Event.attributes ['name', 'picture'];
var _event = Event.init({name: "document", picture: "images.jpg"});
_event.save();
var json = JSON.stringify(Event.records);
document.write(json);
你实际上用一些参数(某个对象)调用init()......但是如果你在Model.js中查看你的“init”函数,它就不接受任何参数。因此,从这里更改init函数会很好:
init: function(){
var instance = Object.create(this.prototype);
instance.parent = this;
instance.init.apply(instance, arguments);
return instance;
},
进入这个:
init: function(args){
var instance = Object.create(this.prototype);
instance.parent = this;
instance.init.apply(instance, arguments);
jQuery.extend(instance, args);
return instance;
},
即便在此之后,您的JSON.stringify
将打印错误的值(仅_id),因为它无法序列化您的javascript对象中存在的循环引用。但是你的属性在那里,可以使用。您可以通过以下方式更改代码来检查:
var Event = Model.create();
Event.attributes ['name', 'picture'];
var _event = Event.init({name: "document", picture: "images.jpg"});
_event.save();
var json = JSON.stringify(Event.records);
document.write(json);
进入这个:
var Event = Model.create();
Event.attributes ['name', 'picture'];
var _event = Event.init({name: "document", picture: "images.jpg"});
_event.save();
var json = JSON.stringify(Event.records);
document.write(json);
for(var k in Event.records)
alert(Event.records[k]['picture']);
它将为您提醒一个不错的“images.jpg”字符串,这意味着您的对象与您的属性一起被保存并可以使用(json.stringify无法告诉您)。
我希望这对您的学习有所帮助。