使用时:
var dataToSave = ko.toJSON(myViewModel);
..是否可以 不 序列化为null的值?
序列化我当前的viewModel可以创建大约500Kb的JSON,其中的大多数结果如下:
"SomeObject": { "Property1": 12345, "Property2": "Sometext", "Property3": null, "Property4": null, "Property5": null, "Property6": null, "Property7": null, "Property8": null, "Property9": false }
如果我可以让序列化程序忽略空值,则可以将其简化为:
"SomeObject": { "Property1": 12345, "Property2": "Sometext", "Property9": false }
有什么想法可以指示序列化程序忽略空值吗?
请记住,ko.toJSON只是JSON stringify的修改。您可以传入一个replacer函数。
作为在Knockout中使用替换函数的示例,我根据一个淘汰赛教程整理了一个JSFiddle。注意makeJson和makeCleanJson函数之间的区别。我们可以选择在我们的replacer函数中不返回任何值,并且该项目将在JSON字符串中被跳过。
makeJson
makeCleanJson
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; } })); };