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