我正在使用 .NET Framework 和 ASP.NET Core 创建 REST Web Api。
此 Web API 有一个调用,用于获取请求模型以保存数据,以及一些调用,用于稍后检索数据。
大多数数据是我在后端需要的结构化信息,它们被保存到数据库中的不同字段和表中。检索时,它会从这些表中加载并返回。
这一切都有效。
然而,我现在有一个要求,调用者想要保存并稍后检索任意数据(让我们说随机 json)作为这些字段之一。我可以从数据库保存和加载 json,这不是问题,我的问题是为我的请求构建 Web api 模型。
[HttpPost]
public IActionResult Save([FromBody] ApiCallRequestModel request)
{
// ...
}
public sealed class ApiCallRequestModel
{
// structured, well known information
public int? MaybeSomeNumber { get; set; }
[Required]
public string SomeText { get; set; }
[Required]
public SubModel SomeData { get; set; }
// one field of unknown json data
public ??? CustomData { get; set; }
}
我能想到dynamic
或者甚至可能ExpandoObject
or JObject
我可能会尝试,但我想要一个有效的解决方案,因为它是最佳实践,而不仅仅是因为我尝试过并且今天通过我的简单测试没有失败。
如果其他一切都失败了,我可以将该字段设置为字符串并告诉客户端将序列化的 json 放入其中。但如果这个问题没有答案,我认为这是最后的解决办法。
事实证明,用 google 搜索这个主题非常困难,因为我使用的所有单词都会引导我进入解释请求模型本身的 Json 序列化的页面。我知道这是如何运作的,这不是问题。结构化数据的混合andfree json 是我无法从权威来源找到的。
那么你会在这里使用什么类型,在模型的一个属性中接收任意 json 的最佳实践是什么?