C#WebApi Json发布

时间:2017-06-06 08:41:26

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

我在WEB API下面有C#代码当我在JSON下面发布时,Account对象始终为null。请任何人都可以指导以下代码。

public class Account
{
    public string id { get; set; }
    public string number { get; set; }
}

public object Post([FromBody] Account account)
{
    Message msg = new Message();
    msg.status = "Status";
    return Request.CreateResponse(msg);
}

JSON

{
  "Accounts": {
    "id": "13456454",
    "number": "222",
  }
}

4 个答案:

答案 0 :(得分:3)

你的json:

{
  "Accounts": {
    "id": "13456454",
    "number": "222",
  }
}

可以将其解析为具有Accountsid属性的属性number的对象

如果你只想发布一个Account你的json应该是:

{
    "id": "13456454",
    "number": "222"
}

答案 1 :(得分:1)

您只需按以下格式发布 ID 数字

 {
     "id": "13456454",
     "number": "222",  
 }

这将为你做好准备。

答案 2 :(得分:1)

您的Account对象为空,因为C#代码与您提供的JSON不一致。这就是MVC如何通过糟糕的请求来保护自己。

模型表明,你在JSON中得到的只是这两个纯字段idnumber,所以它的JSON应该是这样的:

{
    "id": "13456454",
    "number": "222"
}

为了使C#模型适用于提供的JSON,它应该像这样构建:

public class Accounts
{
    public Account Accounts { get; set; }
}

public class Account
{
    public string id { get; set; }
    public string number { get; set; }
}

API Action原型应如下所示:

public object Post([FromBody] Accounts account)

这样你就可以将Account包含在另一个属性为Accounts的类中,类似于你提供的JSON。

但是,您的命名方案表明单个请求可能包含多个帐户。要实现这一点,C#类应如下所示:

public class Accounts
{
    public Account[] Accounts { get; set; }
}

public class Account
{
    public string id { get; set; }
    public string number { get; set; }
}

你的JSON应该包含对象数组:

{
    "Accounts": [
        {
            "id": "13456454",
            "number": "222",
        },
        {
            "id": "23456",
            "number": "125",
        },
    ]
}

当然,如果你需要,那个数组只能包含单个元素,但它可以让你一次放置多个Account,正如你的命名所示。

为了将来参考,您应该更准确地了解您想要的结果,以确保我们最了解我们应该如何帮助您。

答案 3 :(得分:0)

您正在从客户端发送帐户列表,但如果您想发送单个对象,则api可能需要单个对象,您可以从json文件发送单个对象,否则您可以将服务器对象更改为List