我们有一个MVC(MVC4)应用程序,该应用程序有时可能会收到从第三方发送到我们特定URL(“ http://server.com/events/ ”)的JSON事件。JSON事件位于HTTP POST的正文中,而正文则严格为JSON(Content-Type: application/json
-不在某些字符串字段中包含JSON的表单帖子)。
如何在控制器主体内部接收JSON主体?我尝试了以下内容,但一无所获
[编辑]:当我说什么都没得到时,我的意思是jsonBody始终为null,无论我将其定义为Object
还是string
。
[HttpPost]
// this maps to http://server.com/events/
// why is jsonBody always null ?!
public ActionResult Index(int? id, string jsonBody)
{
// Do stuff here
}
请注意,我知道如果我使用强类型输入参数来声明方法,则MVC会进行整个解析和过滤,即
// this tested to work, jsonBody has valid json data
// that I can deserialize using JSON.net
public ActionResult Index(int? id, ClassType847 jsonBody) { ... }
但是,我们获得的JSON种类繁多,因此我们不想为每个JSON变体定义(并维护)数百个不同的类。
我正在通过以下curl
命令对此进行测试(此处是JSON的一种变体)
curl -i -H "Host: localhost" -H "Content-Type: application/json" -X POST http://localhost/events/ -d '{ "created": 1326853478, "data": { "object": { "num_of_errors": 123, "fail_count": 3 }}}