我在.net Core3.1中添加了NewtonsoftJson作为中间件。我很乐意转移到新的System.Text.Json序列化程序。
我不能跳过,但是有没有办法在一个方法中使用来自System.Text.Json的方法?或多或少,这是一个我需要加速的问题。
添加:我在启动中
services.AddControllers(options => options.RespectBrowserAcceptHeader = true)
.AddNewtonsoftJson(options => options.SerializerSettings.ReferenceLoopHandling =
Newtonsoft.Json.ReferenceLoopHandling.Ignore);我的迁移问题是,我不能一下子把它改成System.Text.Json。因此,如果我可以更改一个控制器或控制器中的一个方法来使用System.Text.Json版本,就可以解决我的问题。
发布于 2020-05-28 05:16:09
这在.Net 3.1中目前还没有实现。当前的迁移指南规定:
Newtonsoft.Json还有一个ReferenceLoopHandling设置,可以让您忽略循环引用,而不是抛出异常。
System.Text.Json仅支持按值序列化,并对循环引用抛出异常。
另请参阅github issue ,其中声明这是一个“已知限制”-但目前发布的里程碑是.Net Core5.0。建议的规范在这里:https://github.com/dotnet/runtime/blob/master/src/libraries/System.Text.Json/docs/ReferenceHandling_spec.md
发布于 2021-07-11 01:15:24
从.Net 6开始,System.Text.Json支持忽略循环引用,可以这样使用
services.AddControllers()
.AddJsonOptions(options => {options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;});有关更多信息,请查看此处:https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-preserve-references?pivots=dotnet-6-0
https://stackoverflow.com/questions/62030909
复制相似问题