我正在尝试找出一种以整洁(更自然)的方式将 Json 格式的数据发送到 Web api 控制器的方法。
让我解释一下。假设我有这个控制器:
[HttpPost]
public class StudentController : ApiController
{
public void PostSomething([FromBody] string name, [FromBody] Student s)
{
//do something
}
}
我想发布的 json 数据是这样的(因为它的格式正确):
{
"name" : "John",
"student" : {
"id" : "1",
"age" : "22"
}
}
但是我应该为 Web api 发送的内容parameter bind
对象应该是这样的:
{
"John",
{
"id" : "1",
"age" : "22"
}
}
问题是,如果我使用我想要的 json 格式,name
和 student
对象在控制器的 PostSomething
方法中都将为 null。
如何将格式类似于第一个示例的 json 请求发送到我的 Web api 控制器?
为了使用所需的JSON结构,您可以更改PostSomething的方法签名并引入一个表示已发送数据的类。 例如
public class StudentTransferObject {
public string Name {get; set;}
public Student Student {get; set;}
}
使用控制器:
[HttpPost]
public class StudentController : ApiController
{
public void PostSomething([FromBody] StudentTransferObject studentInformation)
{
//do something
}
}
-
从响应正文中读取文本并自行解析对象:
[HttpPost] public async Task<string> PostSomething() { string result = await Request.Content.ReadAsStringAsync(); //parse here how you want return result; }
-
使用自定义绑定或 JToken 进行动态序列化。