如何解决.Net Core WebAPI:使用不同的 json 序列化器选项在同一控制器中反序列化请求正文
我正在创建一个 .Net Core WebAPI (3.1),它需要能够根据请求正文的类型更改其 json 序列化程序设置。 我使用的是 Json.Net 而不是 System.Text.json。
public class MyController
{
public virtual ActionResult<IEnumerable<TEntity>> GetFilteredEntities(int maxNResults,[FromBody] IFilter<TEntity> filter)
...
public virtual ActionResult<TEntity> Update([FromBody] TEntity entity)
}
在我的示例中,TEntity 需要使用包含 PreserveReferencesHandling 选项但 IFilter 不能的设置进行序列化。
我发现许多解决方案能够为响应切换 json 选项,但没有为请求切换。请问我怎样才能实现我的目标?
解决方法
您可以在每个控制器方法中执行此操作。响应或请求,如果它们有类型,您可以序列化它们。
在GetFilteredEntities
中,
var Settings = new Newtonsoft.Json.JsonSerializerSettings
{
PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Object
};
var TheJSON = Newtonsoft.Json.JsonConvert.SerializeObject(filter,filter.GetType().BaseType,Settings);
在Update
中,
var Settings = new Newtonsoft.Json.JsonSerializerSettings
{
PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All
};
var TheJSON = Newtonsoft.Json.JsonConvert.SerializeObject(entity,entity.GetType().BaseType,Settings);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。