将 JSON 格式的 POST 发送到 ApiController
本文关键字:ApiController POST JSON 格式 | 更新日期: 2023-09-27 18:33:54
编辑:找到答案(在评论中)。
目前,我正在使用System.Web.Http.ApiController
来访问服务器内存中的某个对象。这些对象可以具有任何类型。
我使用以下 api 控制器来接收它们:(示例代码。不是完整的源代码)
public class DataController : ApiController
{
Dictionary<String, Object> _dataDict;
public object Get(string dataPath)
{
Object result = _dataDict[dataPath];
return result;
}
}
这可以通过 Web 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 实例。如何告诉格式化程序或 ApiController(我不知道谁实际创建了实例)以使用正确的类型创建正确的实例?
我正在使用System.Net.Http.Formatting.JsonMediaTypeFormatter
.
提前谢谢。
德夫卢兹
好吧,
它实际上是一个JObject,而不是一个动态对象。尴尬的答案是:
public void Post(string dataPath, JObject obj)
{
Type myClass = figureOutMyTypeByParsingThePath(dataPath);
_dataDict[dataPath] = obj.ToObject(myClass);
}