Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Web API控制器中接收Json反序列化对象作为字符串_C#_Serialization_Asp.net Web Api_Json.net - Fatal编程技术网

C# 在Web API控制器中接收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

以下是我从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; }
        }

    }
这个需求的原因是,我没有使用通过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;
}