0
編輯:找到答案(在評論中)。發送POST到JSON到ApiController
目前,我使用System.Web.Http.ApiController
訪問服務器內存中的某個對象。這些對象可以有任何類型。
我用下面的API控制器接收他們: (示例代碼而不是完整的源代碼)
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
}
這正常通過網絡API來接收我的JSON的所有對象。問題是使用POST發送新對象:
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
public void Post(string dataPath, Object obj)
{
_dataDict[dataPath] = obj;
}
}
該對象將是一個動態對象而不是真正的反序列化對象。實施具體方法如:
public object Post(string dataPath, MyClass instance)
{
_dataDict[dataPath] = instance;
}
工作正常。可悲的是,我不知道運行時使用的所有類型,但是我知道哪種類型是通過分析dataPath並在運行時獲得Type實例。如何使用正確的Type來告訴格式化程序或ApiController(我不知道是誰創建實例)以創建正確的實例?我正在使用System.Net.Http.Formatting.JsonMediaTypeFormatter
。
在此先感謝。
devluz
我不能回答我的問題,但找到了解決辦法: 它實際上是一個JObject,而不是一個動態對象。尷尬的答案是: public void Post(string dataPath,JObject obj) { 類型myClass = figureOutMyTypeByParsingThePath(dataPath); _dataDict [dataPath] = obj.ToObject(myClass); } 而我需要幾個小時才能弄清楚...... – luz
對不起,浪費你的時間:)謝謝 – luz