Json 参数转换继承 web api 2
Json parameter casting inheritance web api 2
我正在使用 MS Web API 2 接收来自我们使用 ajax 的网页的呼叫。
然后我有 2 类: subscriber 和 externalSubscriber。订阅者包含非常基本的数据,如名称和 ID。外部订阅者继承自订阅者并添加地址和电子邮件等基本数据。我有一个 api 方法来编辑这样定义的订阅者的数据:
public IHttpActionResult PutSubscriber(int id, Subscriber subscriber)
在我们的页面中,我使用提供的数据创建了一个 json 字符串,这导致它成为外部或普通订阅者。
我可以 post 使用这两个函数但是使用 externalSubscriber 对象添加的数据会丢失并且尝试从订阅者投射会导致错误。
我的问题是,是否有人对这个问题有任何经验,除了创建用于放置外部订阅者的特定函数之外,是否还有其他方法可以解决此问题。
我已经通过使用以下页面上提供的信息让它工作了:
http://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm
Polymorphism in Web API: Single endpoint possible?
首先我设置 json 设置:
jsonsettings.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
然后在使用 ajax 使用
发送之前设置 json 对象的类型
jsonObject { '$type' : .Models.ExternalSubscriber, solution.project', ....}
在此之后,我可以将传入的订阅者转换为外部订阅者并访问其属性。
我正在使用 MS Web API 2 接收来自我们使用 ajax 的网页的呼叫。 然后我有 2 类: subscriber 和 externalSubscriber。订阅者包含非常基本的数据,如名称和 ID。外部订阅者继承自订阅者并添加地址和电子邮件等基本数据。我有一个 api 方法来编辑这样定义的订阅者的数据:
public IHttpActionResult PutSubscriber(int id, Subscriber subscriber)
在我们的页面中,我使用提供的数据创建了一个 json 字符串,这导致它成为外部或普通订阅者。 我可以 post 使用这两个函数但是使用 externalSubscriber 对象添加的数据会丢失并且尝试从订阅者投射会导致错误。
我的问题是,是否有人对这个问题有任何经验,除了创建用于放置外部订阅者的特定函数之外,是否还有其他方法可以解决此问题。
我已经通过使用以下页面上提供的信息让它工作了: http://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm Polymorphism in Web API: Single endpoint possible?
首先我设置 json 设置:
jsonsettings.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
然后在使用 ajax 使用
发送之前设置 json 对象的类型jsonObject { '$type' : .Models.ExternalSubscriber, solution.project', ....}
在此之后,我可以将传入的订阅者转换为外部订阅者并访问其属性。