C# 在Web API控制器中接收Json反序列化对象作为字符串
以下是我从Ui输入的Json:C# 在Web API控制器中接收Json反序列化对象作为字符串,c#,serialization,asp.net-web-api,json.net,C#,Serialization,Asp.net Web Api,Json.net,以下是我从Ui输入的Json: { "data": [{ "Id": 1 }, { "Id": 2 }, { "Id": 3 }] } 我可以在如下所示的对象结构中无问题地接收它: public class TestController : ApiController { /// <summary> /// Http Get call to get the
{
"data": [{
"Id": 1
}, {
"Id": 2
}, {
"Id": 3
}]
}
我可以在如下所示的对象结构中无问题地接收它:
public class TestController : ApiController
{
/// <summary>
/// Http Get call to get the Terminal Business Entity Wrapper
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[Route("api/TestJsonInput")]
public string TestJsonInput([FromBody] TestInput input)
{
return JsonConvert.SerializeObject(input.data);
}
public class TestInput
{
public List<Info> data { get; set; }
}
public class Info
{
public int Id { get; set; }
}
}
这个需求的原因是,我没有使用通过Web API反序列化的Json对象,我只需要将实际的Json持久化到数据库中,获取并返回到Ui,Ui将解析它
由于我无法按建议接收字符串中的输入,因此我必须执行额外的Json序列化步骤,以达到反序列化的目的。任何一种机制,我都可以通过接收字符串并直接使用它来完全避免这种解决方法。我目前正在使用Postman进行测试,您可以直接将正文内容作为字符串读取,而不管您在方法的参数中输入了什么。实际上,您不需要在参数中添加任何内容,您仍然可以读取主体
[HttpPost]
[Route("api/TestJsonInput")]
public string TestJsonInput1()
{
string JsonContent = Request.Content.ReadAsStringAsync().Result;
return JsonContent;
}
您不需要将输入作为参数读取 如果有多个字符串输入,我假设这是一个单独的Json字符串,需要解析,所以我现在没有在正文中使用它,那么我应该如何从Postman测试相同的内容,在这种情况下输入到哪里?在当前上下文中它对我有效,谢谢大家:)@MrinalKamboj如果你没有在正文中发送它,那么你只需要像平常一样发送字符串作为参数。
[HttpPost]
[Route("api/TestJsonInput")]
public string TestJsonInput1()
{
string JsonContent = Request.Content.ReadAsStringAsync().Result;
return JsonContent;
}