In my last SO question,我問了如何修改Json.NET的序列化程序設置,ASP.NET Web API本身用於(反)序列化。被接受的答案完美工作,例如,我能夠將類型信息嵌入到序列化的JSON字符串中。在ASP.NET Web API中反序列化爲派生類
但是,當我嘗試將此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
});
})
我期望通過修改Json.NET的JsonSerializerSettings
嵌入類型信息它至少可以讀取,並試圖強制反序列化到這種類型,但顯然它不能。
我應該如何處理這樣的事情?
是啊,我也有考慮推出定製'MediaTypeFormatter'來處理任務,但它的思想作爲最後的手段。我一直在想,既然Web API默認使用了Json.NET,那麼上面可能會有些東西來調整/切換,但顯然它不那麼容易。 –