在创建 ASP.NET MVC 应用程序时,我遇到了类似的问题。基本上答案是 JavaScript 没有与 C# 中相同的类型概念。
假设您决定使用 JSON 在应用程序中的客户端和服务器之间传递数据。JSON、XML、YAML 或其他格式的选择并不重要。
服务器端
在您的服务器端,在您的 C# 代码中,您可以执行以下操作(假设您使用的是某种 JSON 库):
var myLinkedList = JsonConvert.DeserializeObject<LinkedList>(json);
现在你有一个类型为 LinkedList 的 myLinkedList 变量。myLinkedList 现在的行为类似于所有 LinkedList 实例。
客户端
但是在客户端站点上,在您的 JavaScript 代码中,您可能会执行以下操作:
function LinkedList(){
//Constructor for your LinkedList
};
LinkedList.prototype = {
//Various functions to operate on your linked list
};
您需要编写类似这样的代码来反序列化从服务器返回的数据:
var linkedList = JSON.parse(jsonString);
请注意,没有办法表明您希望此反序列化数据进入您之前定义的 LinkedList “类”。JavaScript 不理解 LinkedList 是一个“类”,您使用原型添加了功能。
你得到的是一个 JavaScript 对象。
解决此问题的一种方法是执行以下操作:
var linkedList = new LinkedList();
var deserializedObject = JSON.parse(jsonString);
linkedList.Items = deserializedObject.Items;
Basically, you'd have to copy over all the state from your deserialized object into your linkedList variable.