在我的最后一个 SO 问题中,我询问了如何修改 Json.NET 的序列化程序设置,ASP.NET Web API 本身用于(反)序列化。接受的答案非常有效,例如,我能够将类型信息嵌入到序列化的 JSON 字符串中。
但是,当我尝试将此 JSON 字符串返回到期望模型的父类的 Web API 操作时,Web API 仍会反序列化为父类,删除与子类对应的所有数据,并阻止对子类的转换和检测班级。
class Entity { }
class Person : Entity { }
public Person Get() {
return new Person();
}
public bool Post(Entity entity) {
return entity is Person;
}
一个简单的用例是在 jQuery 中做这样的事情:
// get a serialized JSON Person
$.ajax({
url : 'api/person' // PersonController
}).success(function (m) {
// then throw that Person right back via HTTP POST
$.ajax({
url : 'api/person',
type : 'POST',
data : m
}).success(function (m) {
console.log(m); // false
});
})
我希望通过修改JsonSerializerSettings
Json.NET 以嵌入它能够读取的类型信息,并且至少尝试强制反序列化为该类型,但显然它没有。
我应该如何处理这样的事情?