提问者:小点点

接收未知的JSON到我的API并解析它[重复]


我有一个API,从body接收JSON,它是从一些WebUI发送的。

[Route("api/[controller]")]
[ApiController]
public class MyController : ControllerBase
{
        public IActionResult Create([FromBody] MyModel request)
        {
            MyModel newRecord = new();

            try
            {
                newRecord.Id = null;
                newRecord.Date = request.Date;
                newRecord.Name = request.Name;
            }
            catch (Exception e)
            {
                return StatusCode(400, $"Error: {e.Message}");
            }            

            return Ok(newRecord);
        }
}

但是请求不是常数。它随着发展而变化。好的,我知道我必须将MyModelrequest匹配,才能在Body中处理JSON。但由于许多变化,它产生了太多的工作。

有没有解决方案,这样我就可以接收uknown JSON对象并在controler内部解析它?

比如,有没有诀窍,让我可以写

public IActionResult Create([FromBody] var request)

还是类似的?


共1个答案

匿名用户

系统。文本。Json有一个名为JsonElement的类,可以用来将任何JSON绑定到它。

[HttpPost]
public IActionResult Create([FromBody] JsonElement jsonElement)
{
    // Get a property
    var aJsonProperty = jsonElement.GetProperty("aJsonPropertyName").GetString();
    
    // Deserialize it to a specific type
    var specificType = jsonElement.Deserialize<SpecificType>();

    return NoContent();
}