gpt4 book ai didi

c# - 在 Web API Controller 中接收 Json 反序列化对象作为字符串

转载 作者:太空狗 更新时间:2023-10-29 23:13:20 27 4
gpt4 key购买 nike

以下是我从 Ui 输入的 Json:

{
"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; }
}

}

但是我的目标是通过以下 API 方法接收:

      [HttpPost]
[Route("api/TestJsonInput")]
public string TestJsonInput1([FromBody] string input)
{
return input;
}

这个要求的原因是,我没有使用通过 Web API 反序列化的 Json 对象,我只需要将实际的 Json 保存到数据库并获取并返回到 Ui,Ui 将解析它。

由于我无法按照提示接收字符串输入,所以我不得不进行额外的Json序列化、反序列化步骤来达到目的。我可以通过接收字符串并直接使用它来完全避免这种变通方法的任何机制。我目前正在使用 Postman 进行测试

最佳答案

无论您在方法的参数中输入什么,您都可以直接将正文内容作为字符串读取。你实际上不需要在参数中放置任何东西,你仍然可以阅读正文。

[HttpPost]
[Route("api/TestJsonInput")]
public string TestJsonInput1()
{
string JsonContent = Request.Content.ReadAsStringAsync().Result;
return JsonContent;
}

您不需要将输入作为参数读取。

关于c# - 在 Web API Controller 中接收 Json 反序列化对象作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36499682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com