C# 柯东生(ko.toJSON);JavaScriptSerializer问题

C# 柯东生(ko.toJSON);JavaScriptSerializer问题,c#,knockout.js,javascriptserializer,C#,Knockout.js,Javascriptserializer,我使用asp.net web表单和一个隐藏值来存储我的淘汰视图模型,以便在序列化后传递到下一页 ko.toJSON(viewModel)在viewModel中没有元素的情况下返回[{}]。 当这被传递到javascript序列化程序时,它会崩溃,因为字符串的字符串为“null” var stringValue = MyHiddenField.Value var listOfObjects = new JavaScriptSerializer().Deserialize<List<M

我使用asp.net web表单和一个隐藏值来存储我的淘汰视图模型,以便在序列化后传递到下一页

ko.toJSON(viewModel)
在viewModel中没有元素的情况下返回
[{}]
。 当这被传递到javascript序列化程序时,它会崩溃,因为字符串的字符串为“null”

var stringValue = MyHiddenField.Value

var listOfObjects = new JavaScriptSerializer().Deserialize<List<MyObjects>>(stringValue);
var stringValue=MyHiddenField.Value
var listofoobjects=new JavaScriptSerializer().反序列化(stringValue);
有没有办法通过JavascriptSerializer处理空JSON


谢谢

发生这种情况可能是因为您正在初始化您的观察对象,如下所示:

var a = ko.observable();
var a = ko.observable(null);
如果执行此操作,
a
的展开值将未定义。ko.toJSON调用本机JSON.stringify函数,该函数不会用未定义的值序列化属性。为了防止这种情况发生,最简单的方法是像这样初始化您的观察对象:

var a = ko.observable();
var a = ko.observable(null);
在序列化时,这将导致“a”:null,JavaScriptSerializer应该能够对其进行消化


这里有一些例子,请查看控制台:

谢谢您的回答。这给了我解决问题的办法