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吗?

Web Api 2没有反序列化JSON

试着像

那样定义你的模型
public class MyModel
{
    public string MemberId { get; set; }
}

或发布您的数据作为简单的值没有定义JSON对象{memberId: 18}。只是像

"18"

那么它将被映射到您的属性memberId,即使属性将有另一个名称。

更多阅读