我想知道如何可以执行包含属性和模型的Backbone集合的JSON序列化。
所以每个例子如果我有这样的集合:
var myCollection = Backbone.Collection.extend({
initialize: function (attr, options) {
this.property = options.property;
}
});
尝试使用JSON.stringify(myCollection)函数进行字符串化时,stringify将调用Backbone Collection Object中定义的对象toJSON方法。 Backbone集合定义此方法如下:
toJSON : function() {
return this.map(function(model){ return model.toJSON(); });
}
这意味着只有集合中包含的模型才会包含在结果JSON对象中,而不会包含在我之前定义的集合的属性中。
你知道这可以实现吗?
感谢。
编辑:在原始问题中可能不够清楚,我知道我可以覆盖toJSON方法我的问题是如何在一般事项中实现我所需要的(不仅仅是为了这个)特定属性,但想象我有另一个包含其他属性的集合,并且它们都从baseCollection对象继承。更多我想知道如何将该JSON对象恢复到主干原始状态(不确定是否通过创建一个新的在构造函数的参数中传递JSON对象的集合将使用此属性来实现)
答案 0 :(得分:0)
您可以覆盖MyCollection类中的“toJSON”方法并返回所需的字符串。
答案 1 :(得分:0)
你可以覆盖像@ trunal-bhanse这样的toJSON
方法,但如果你的目标是将这些数据与服务器同步,那么你应该找到一种更好的方法来表示这些数据。当您在一个实例上调用toJSON
时,Backbone Collections默认返回一个数组。然后,在发送到服务器之前,使用JSON.stringify
将该数组转换为字符串。但是,JSON.stringify
方法不包含您在阵列上设置的任何属性:
var test = ["foo", "bar", "baz"];
test.Hello = "World!";
console.log(test); // ["foo", "bar", "baz", Hello: "World!"]
JSON.stringify(test); // '["foo", "bar", "baz"]'