Json不完整的输出

时间:2012-03-15 23:26:41

标签: javascript json

我刚开始学习Javascript并试图在同一时间构建应用程序......我认为这是一种很好的学习方式。我正在使用“JavaScript Web应用程序”Alex MacCaw这本书来帮助我。

我陷入了我要将一些字符串序列化为Json的部分。结果应该是这样的:

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

但这仅用于测试目的,但它仅输出id记录而忽略其余记录。

以下是我的代码的链接:

https://gist.github.com/2047336

任何帮助将不胜感激。

1 个答案:

答案 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无法告诉您)。

我希望这对您的学习有所帮助。