Mar*_*son 17 serialization json knockout-2.0 knockout.js
使用时:
var dataToSave = ko.toJSON(myViewModel);
Run Code Online (Sandbox Code Playgroud)
..是否可以不序列化为null的值?
序列化我当前的viewModel会创建大约500Kb的JSON,其中大部分结果如下:
"SomeObject": {
"Property1": 12345,
"Property2": "Sometext",
"Property3": null,
"Property4": null,
"Property5": null,
"Property6": null,
"Property7": null,
"Property8": null,
"Property9": false
}
Run Code Online (Sandbox Code Playgroud)
如果我可以让序列化程序忽略空值,那么这可以减少到:
"SomeObject": {
"Property1": 12345,
"Property2": "Sometext",
"Property9": false
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何指示序列化程序忽略空值?
del*_*ree 29
请记住,ko.toJSON只是对JSON stringify的修改.您可以传入替换函数.
作为在Knockout中使用替换器函数的一个例子,我基于其中一个淘汰教程组建了一个JSFiddle.注意makeJson和makeCleanJson函数之间的区别.我们可以选择不在我们的replacer函数中返回任何值,并且将在JSON字符串中跳过该项.
self.makeJson = function() {
self.JsonInfo(ko.toJSON(self.availableMeals));
};
self.makeCleanJson = function() {
self.JsonInfo(ko.toJSON(self.availableMeals, function(key, value) {
if (value == null)
{
return;
}
else
{
return value;
}
}));
};
Run Code Online (Sandbox Code Playgroud)
Mat*_*and 15
您可以将toJSON方法添加到视图模型中,并使用它来删除所有不需要的属性:
ViewModel.prototype.toJSON = function() {
var copy = ko.toJS(this);
// remove any unneeded properties
if (copy.unneedProperty == null) {
delete copy.unneedProperty;
}
return copy;
}
Run Code Online (Sandbox Code Playgroud)
您可以自动执行它以运行所有属性并删除null属性.
| 归档时间: |
|
| 查看次数: |
20028 次 |
| 最近记录: |