【发布时间】:2013-05-08 15:14:03
【问题描述】:
我正在使用 ASP.NET MVC 4 WebAPI 构建我的第一个 WebAPI。
请求必须使用 application/json ContentType 以 utf-8 作为字符集发送。
我的 POST 方法如下所示:
public HttpResponseMessage Post([FromBody]string value)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
每当我发送 POST 请求时,参数“value”为空。请求正文包含 Json:{ "name":"test" }。
我更喜欢将 Post 方法的参数设置为包含 Json 的字符串或 JObject 类型(来自 JSON.NET 库)。我该如何做到这一点?这甚至可能吗?
【问题讨论】:
-
当然。首先,将值重命名为'name'
-
那行不通。参数的值仍然为空。 Json 最终将类似于 { "name1": [ {}, {} ], "name2": [], "name3":"some value" }。我不希望系统本身将 Json 反序列化为对象。我想自己做。
-
如果要控制反序列化,请为 JSON 添加自定义媒体类型格式化程序。否则,您是否可以选择将正文作为 x-www-form-urlencoded 字符串发送,然后从中创建一个对象?
-
如果你发送一个 JSON 对象到 Web API 服务,你可以创建一个包含“name1”、“name2”等的 POCO 模型,然后你可以将你的方法更改为 public HttpResponseMessage Post(YourObject object) {} 之后,您可以使用通常的 JSON.NET 解析方法在方法中对其进行反序列化。您是从 JavaScript 发送 JSON,可以显示代码吗?
-
这是一个很好的例子:stackoverflow.com/questions/13870161/…
标签: json asp.net-web-api