如何接收从外部发布的传入json数据

时间:2017-12-23 15:02:17

标签: asp.net-mvc

我希望将json格式的发布数据接收到我的控制器。实际上它用于paypal支付webhook通话问题。我已经附加了一个json数据示例。请告诉我“FormCollection”是访问json的好主意还是最适合这种情况的做法?

JSON:

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

控制器:

[HttpPost]
public JsonResult ReceiveData(FormCollection data)
{
    using (var ctx = new db_mydb())
    {
    }

    return Json("ok");
}

1 个答案:

答案 0 :(得分:3)

由于接收到的数据是结构化的并以JSON格式提交,因此您应该创建强类型模型来存储数据。

public class Menuitem {
    public string value { get; set; }
    public string onclick { get; set; }
}

public class Popup {
    public IList<Menuitem> menuitem { get; set; }
}

public class Menu {
    public string id { get; set; }
    public string value { get; set; }
    public Popup popup { get; set; }
}

public class PaypalWebhookModel {
    public Menu menu { get; set; }
}

应该更新操作以反映所需的模型。

[HttpPost]
public JsonResult ReceiveData([FromBody]PaypalWebhookModel data) {
    using (var ctx = new db_mydb()) {
        //...
    }
    return Json("ok");
}