将一个方法迁移到 System.Text.Json

9

我在 .net core 3.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 版本,那么就可以解决我的问题。


我不知道你想迁移什么,因为你没有提供示例。请参阅有关从Newtonsoft迁移到System.Text的官方文档 - user12637955
2
请参见System.Text.Json引用循环处理-请注意,该版本的发布里程碑是Net Core 5.0。 - stuartd
2
有没有办法在某种方法中使用 System.Text.Json 中的一个?更或者说,我需要加速的就是这个。你可以使用任何库,只要你明确说明了。也许在你的问题中添加一些细节会更好? - stuartd
1
请参阅当前的迁移指南 *如何从Newtonsoft.Json迁移到System.Text.Json:JsonSerializer目前不支持的场景:保留对象引用和处理循环*,其中指出 ReferenceLoopHandling.Ignore 目前未实现。 - dbc
2个回答

30

2

目前在.Net 3.1中尚未实现此功能。当前的迁移指南从Newtonsoft.Json迁移到System.Text.Json:JsonSerializer目前不支持的场景:保留对象引用和处理循环中指出:

Newtonsoft.Json还有一个ReferenceLoopHandling设置,可让您忽略循环引用而不是抛出异常。

System.Text.Json仅支持按值序列化,并对循环引用抛出异常。

请参见github问题System.Text.Json Reference Loop Handling #29900,其中说明这是一个“已知限制” - 但是已经有一个当前版本的里程碑,即 .Net Core 5.0。提议的规范在此处:https://github.com/dotnet/runtime/blob/master/src/libraries/System.Text.Json/docs/ReferenceHandling_spec.md


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接