c# - 从 POST 主体反序列化通用对象

标签 c# asp.net-web-api

我有一个接受通用对象的 WebAPI 端点。

[HttpPost]
[ApiRoute("endpoint/{type}")]
public IHttpActionResult MyPostEndpoint(TypeEnum type, [FromBody] object myObject){}

我们一般处理对象,但最终将其转换为我们的对象类型,但当我们这样做时,我们必须先将其转换为 JObject,因此获取对象看起来像这样:

var myfoo = ((JObject) object).ToObject<Foo>();

如果我直接提供 Foo 作为我的 POST 参数(例如 [FromBody] Foo myObject),那么它会将传入的 JSON 反序列化为 Foo,但它不会反序列化为通用 C# 对象。有没有办法让它反序列化为通用 C# 对象,而不是将其保留为 JObject,这样我就可以像这样获取 myfoo?

var myfoo = (Foo) object;

最佳答案

作为返回数据的通用 post 方法,我使用。比你可以通过任何类(class),所以请求更通用

 public class Requests
 {
 //...
 public async Task<ResultType> Create<ResultType>(string uri)
 {
 //TODO implementation of httpclient POST logic go here

var data = await results.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<ResultType>(data);
return result;
}

调用方式

List<foo> foos = new List<foo>();
Request requestToServer = new request();
Task.WaitAll(Task.Run(async =>(){
foos = await requestToServer.Create<Foo>("/foo");
}));

现在你可以传递任何预定义的类

关于c# - 从 POST 主体反序列化通用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192403/

相关文章:

C#字符串 "likeness"对比测试

c# - 统一WebSocket4Net

c# - 无法将类型为 'Newtonsoft.Json.Linq.JObject' 的对象转换为类型 'System.Collections.Generic.Dictionary` 2[System.String,System.Object]'

ASP.NET Web API 格式化程序

c# - POST参数仅在Unity3d中始终为null

c# - 从 PutAsJsonAsync 获取 'Bad Request'

c# - 如何清除 javascript 中 OnUnload 事件中的 asp.net session 值

c# - 在 .NET 4.5.2 控制台应用程序中使用 .NET Core 库

c# - ASP .NET WebAPI 路由数据模式

c# - 在 C# 中手动解码 OAuth 不记名 token