ASP.NET WebAPI中的ContentType应用程序/json

ASP.NET WebAPI中的ContentType应用程序/json,json,asp.net-web-api,Json,Asp.net Web Api,我正在使用ASP.NETMVC4WebAPI构建我的第一个WebAPI 请求必须使用application/json ContentType发送,字符集为utf-8 我的POST方法如下所示: public HttpResponseMessage Post([FromBody]string value) { return new HttpResponseMessage(HttpStatusCode.OK); } ={ "name":"test" } 无

我正在使用ASP.NETMVC4WebAPI构建我的第一个WebAPI

请求必须使用application/json ContentType发送,字符集为utf-8

我的POST方法如下所示:

    public HttpResponseMessage Post([FromBody]string value)
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
={ "name":"test" }
无论何时发送POST请求,参数“value”都为null。请求正文包含Json:
{“name”:“test”}


我更喜欢将Post方法的参数设置为包含Json的字符串或JObject类型(来自Json.NET库)。我如何做到这一点?这可能吗?

最简单的方法是直接从
请求中获取原始字符串

public async Task<HttpResponseMessage> Post()
{
    string value = await Request.Content.ReadAsStringAsync();

    return new HttpResponseMessage(HttpStatusCode.OK);
}
您可以通过以下jQuery代码实现类似的功能(例如):

在这种情况下,您可以使用问题中的签名


最后,始终可以选择创建自己的
MediaTypeFormatter
,以替换默认的
JsonMediaTypeFormatter
,并使其始终将内容反序列化为
JObject
。当然,您可以阅读有关创建和注册
MediaTypeFormatter
和。

的更多信息。首先,将值重命名为不起作用的“name”。参数的值仍然为null。Json最终将类似于{“name1”:[{},{}],“name2”:[],“name3”:“some value”}。我不希望Json被系统本身反序列化为对象。如果您想控制反序列化,请为JSON添加一个自定义媒体类型格式化程序。否则,您是否可以选择将主体作为x-www-form-urlencoded字符串发送,然后从中创建对象?如果您将JSON对象发送到Web API服务,您可以创建包含“name1”、“name2”等的POCO模型,然后您可以将方法更改为公共HttpResponseMessage Post(您的对象){}之后,您可以使用常用的JSON.NET解析方法在方法中对其进行反序列化。您是否从JavaScript发送JSON,是否可以显示代码?下面是一个很好的示例:
$.post('api/values', '=' + JSON.stringify({ name: 'test' }));