简体   繁体   English

Web Api 2不反序列化JSON

[英]Web Api 2 not deserializing JSON

I'm trying to call a web service API in my application and I am passing in a parameter, but for some reason, its not deserializing the JSON. 我正在尝试在应用程序中调用Web服务API,并且传入了一个参数,但是由于某种原因,它没有反序列化JSON。 Instead, its just passing in my JSON as a string. 相反,它只是以字符串形式传入我的JSON。 Here is the API code: 这是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
    // ...
}

Note that I originally had [FromBody]int memberId . 请注意,我最初有[FromBody]int memberId I got a bad request, so I changed it to object so I could see what exactly was getting passed in. What's getting passed in is a string which contains "{memberId: 18}" . 我收到了一个错误的请求,所以我将其更改为object以便可以看到到底传入了什么。传入的是一个包含"{memberId: 18}"的字符串。

Here is my AJAX call code to the API: 这是我对API的AJAX调用代码:

$.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
    }
});

Any idea why the model binder is not deserializing my JSON? 知道为什么模型绑定程序没有反序列化我的JSON吗?

Try to define your model like 尝试像这样定义模型

public class MyModel
{
    public string MemberId { get; set; }
}

Or post your data as simple value without defining JSON object {memberId: 18} . 或将数据发布为简单值而不定义JSON对象{memberId: 18} Simply like 就像

"18"

Then it will be mapped to your property memberId, even if property will have another name. 然后,它将被映射到您的属性memberId,即使该属性将具有另一个名称。

More reading 更多阅读

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM