我在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);
}
{
"Accounts": {
"id": "13456454",
"number": "222",
}
}
答案 0 :(得分:3)
你的json:
{
"Accounts": {
"id": "13456454",
"number": "222",
}
}
可以将其解析为具有Accounts
和id
属性的属性number
的对象
如果你只想发布一个Account
你的json应该是:
{
"id": "13456454",
"number": "222"
}
答案 1 :(得分:1)
您只需按以下格式发布 ID 和数字:
{
"id": "13456454",
"number": "222",
}
这将为你做好准备。
答案 2 :(得分:1)
您的Account
对象为空,因为C#代码与您提供的JSON不一致。这就是MVC如何通过糟糕的请求来保护自己。
模型表明,你在JSON中得到的只是这两个纯字段id
和number
,所以它的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