Web Api 2没有反序列化JSON
本文关键字:反序列化 JSON Api Web | 更新日期: 2023-09-27 18:15:45
我试图在我的应用程序中调用web服务API,我正在传递一个参数,但由于某种原因,它没有反序列化JSON。相反,它只是将JSON作为字符串传入。下面是API代码:
[Route("api/v1/images/GetMemberImageUrl", Name = "ApiImagesGetMemberImageUrl")]
[HttpPost]
public IHttpActionResult GetMemberImageUrl([FromBody]object memberId)
{
// memberId is a string and it contains "{memberId: 18}"
// Do stuff
// ...
}
注意,我最初有[FromBody]int memberId
。我收到了一个错误的请求,所以我把它改成了object
,这样我就能看到到底传入了什么。传递进来的是一个包含"{memberId: 18}"
的字符串
这是我的AJAX调用代码的API:
$.ajax({
type: 'POST',
cache: false,
timeout: 30000,
data: JSON.stringify({memberId: @Infrastructure.Member.GetAuthenticatedMembersId()}),
url: '@Url.HttpRouteUrl("ApiImagesGetMemberImageUrl", null)',
contentType: "application/json",
success: function(retval) {
// Do more stuff
}
});
知道为什么模型绑定器不反序列化我的JSON吗?
试着像
那样定义你的模型public class MyModel
{
public string MemberId { get; set; }
}
或发布您的数据作为简单的值没有定义JSON对象{memberId: 18}
。只是像
"18"
那么它将被映射到您的属性memberId,即使属性将有另一个名称。
更多阅读