Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除映射:多次映射和保存时JSON会增长_Javascript_Json_Knockout.js_Knockout Mapping Plugin - Fatal编程技术网

Javascript 敲除映射:多次映射和保存时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);

当我获取一个敲除对象并通过执行ko.toJSON将其序列化为JSON,然后使用ko.mapping.fromJSON多次将其从JSON中取消序列化时,加载的对象具有递归增长的
\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个参数。