Javascript 敲除映射:多次映射和保存时JSON会增长
当我获取一个敲除对象并通过执行ko.toJSON将其序列化为JSON,然后使用ko.mapping.fromJSON多次将其从JSON中取消序列化时,加载的对象具有递归增长的Javascript 敲除映射:多次映射和保存时JSON会增长,javascript,json,knockout.js,knockout-mapping-plugin,Javascript,Json,Knockout.js,Knockout Mapping Plugin,当我获取一个敲除对象并通过执行ko.toJSON将其序列化为JSON,然后使用ko.mapping.fromJSON多次将其从JSON中取消序列化时,加载的对象具有递归增长的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 示例代码: var joe = new Person(); for (var i = 0; i < 10; i++) { var json = ko.toJSON(joe);
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
示例代码:
var joe = new Person();
for (var i = 0; i < 10; i++) {
var json = ko.toJSON(joe);
joe = ko.mapping.fromJSON(json);
}
var-joe=newperson();
对于(变量i=0;i<10;i++){
var json=ko.toJSON(joe);
joe=ko.mapping.fromJSON(json);
}
复制它的简单JSFIDLE:
如何在不让序列化json表单变得庞大的情况下多次加载和保存
我正在考虑在加载时将\uuu ko\u mapping\uu
属性设置为undefined,但是我想知道是否有更好的方法或者我缺少的东西
这是我提交的问题吗?不要覆盖模型。相反,将其从JSON传递到fromJSON
,以便更新模型:
ko.mapping.fromJSON(json, joe);
不要覆盖模型。相反,将其从JSON传递到fromJSON
,以便更新模型:
ko.mapping.fromJSON(json, joe);
因此,在我的实际用例中,我在页面加载之间加载JSON并将其保存到html5 localStorage。当我第一次加载页面时,我应该首先创建一个新的空白人,然后将其作为第二个参数传递给ko.mapping.fromJSON
,而不是使用1个参数fromJSON
?如果创建一个新的空白人,则传递1个参数:var joe=ko.mapping.fromJSON(json)
(或fromJS
如果它是普通JS对象)。然后,如果您想在之后更新此人,请使用上述两个参数。因此,在我的实际用例中,我会在页面加载之间加载JSON并将其保存到html5 localStorage。当我第一次加载页面时,我应该首先创建一个新的空白人员,然后将其作为第二个参数传递到ko.mapping.fromJSON
,而不是ever使用1个参数fromJSON
?如果您创建了一个新的空白人物,请传递1个参数:var joe=ko.mapping.fromJSON(json)
(或者fromJS
,如果它是一个普通的JS对象)。然后,如果您想在之后更新此人,请使用上述2个参数。