我正在使用asp.net网页表单和隐藏值来存储我的knockout viewmodel以在序列化后传递到下一页。
如果viewmodel中没有元素, ko.toJSON(viewModel)
会返回[{}]
。
当这被传递给javascript序列化程序时,它会爆炸,因为字符串的字符串为“null”。
var stringValue = MyHiddenField.Value
var listOfObjects = new JavaScriptSerializer().Deserialize<List<MyObjects>>(stringValue);
有没有办法通过JavascriptSerializer处理空JSON?
由于
答案 0 :(得分:1)
这可能是因为你正在初始化这样的observable:
var a = ko.observable();
如果这样做,a
的展开值将是未定义的。 ko.toJSON调用本机JSON.stringify函数,该函数不会使用未定义的值序列化属性。为了防止这种情况,最简单的方法是初始化您的observable,如下所示:
var a = ko.observable(null);
在序列化时,这将导致“a”:null,JavaScriptSerializer应该能够消化它。
这是一个小例子,检查控制台:http://jsfiddle.net/v87Ky/1/