2012-03-15 31 views
0

我刚刚开始学习Javascript并试图在同一个平台上构建应用程序......我认为这是学习的好方法。我正在使用“JavaScript Web Applications”这本书Alex MacCaw来帮助我。Json未完成输出

我被困在部分地方,我打算将一些字符串序列化为Json。结果应该是这样的:

{"7B2A9E8D...":"{"name":"document","picture":"pictures.jpg","id":"7B2A9E8D..."}"} 

但是,这只是为了测试目的,但它只输出id记录,而忽略其余部分。

这里是链接到我的代码:

https://gist.github.com/2047336

任何帮助将不胜感激。

回答

0

把它像这样:

{"7B2A9E8D...":{"name":"document","picture":"pictures.jpg","id":"7B2A9E8D..."}} 

随着{}你开始一个对象......如果你把“{}”这是一个字符串...但因为你里面有很多双引号字符串,你有语法错误。

UPDATE:

,我的问题是,目前尚不清楚你想达到这样的庞大的代码应该只保存对象到数组什么:)(所以我不知道是什么部分实际上需要被改变)。如果你想几个简单的提示,在这里,他们是:

你有这样的和平代码:

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: 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只是无法告诉你)。

我希望这有助于你的学习努力。

+0

感谢您的回答vucetica,但这实际上是函数'JSON.stringify()'的输出。 – JayDesign 2012-03-16 00:03:20

+0

我已经更新了我的答案。 – 2012-03-16 02:41:09

+0

为了回答你的问题,我想实现的目标,我实际上学习如何使用书中的代码来构建应用程序......就像显示一个区域中发生夜间事件的网格一样简单......对于现在,我只是测试,玩代码,看看我能做到这一点。我会在今天晚些时候测试您的解决方案并通知您。再次感谢! – JayDesign 2012-03-16 12:48:01