【问题标题】:How to Consume a Post Request w/ json (Web API c#)如何使用 json 使用 Post 请求(Web API c#)
【发布时间】:2018-02-19 03:03:56
【问题描述】:

我遇到了一个奇怪的问题。我正在尝试从帖子中使用 json 对象(用邮递员制作):

POST /api/orders/ HTTP/1.1
Host: localhost:61595
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 1b628111-4498-e175-733b-00172ad529d6

{
   "Fname" : "Jonathan",
   "Lname" : "Barker",
   "OrderItem" : "64734"
}

我的控制器如下所示:

// POST: api/Orders
    public void Post([FromBody]string value)
    {
        var oMycustomclassname =Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(value);
    }

在调试中值为空。我确定我错过了一些简单的东西。有人可以解释我做错了什么吗?谢谢!

【问题讨论】:

  • 为什么您的 api 控制器操作采用字符串而不是实际对象?
  • @Fran Fran 谢谢你的问题,你能给我一个对象控制器动作的例子吗?

标签: c# json ajax asp.net-web-api


【解决方案1】:

你可以为你的参数创建一个类:

class Order
{
    public string OrderItem {get;set;}
    public string Fname {get;set;}
    public string Lname {get;set;}
}

然后您可以在 API 参数中将 string 更改为 Order

// POST: api/Orders
public void Post([FromBody]Order value)
{
    //value already contains Lname, Fname, and OrderItem.
    //Access it like this: value.Lname
}

【讨论】:

  • 做到了!快速跟进 Jeric:
  • 如何处理更复杂的 Json,例如 {"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ { "value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick ": "CloseDoc()"} ] } }}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2023-01-20
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多