Перенести один метод в System.Text. Json - PullRequest
0 голосов
/ 26 мая 2020

Я добавил Newtonsoft Json в качестве промежуточного ПО в. net core 3.1. Я хотел бы перейти на новый сериализатор 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, это решило бы мою проблему.

1 Ответ

1 голос
/ 28 мая 2020

Это в настоящее время не реализовано в. Net 3.1. Текущее руководство по миграции Как перейти с Newtonsoft. Json на System.Text. Json: сценарий ios, который в настоящее время не поддерживает JsonSerializer: Сохранение ссылок на объекты и обработка циклов утверждает:

Newtonsoft.Json также имеет параметр ReferenceLoopHandling, который позволяет игнорировать циклические ссылки, а не генерировать исключение.

System.Text. Json поддерживает только сериализацию по значению и генерирует исключение для циклических ссылок.

См. Также проблему github System.Text. Json Ссылка L oop Обработка # 29900 , где указано, что это «известное ограничение», но есть текущая веха для выпуска: Net Core 5.0. Предлагаемая спецификация находится здесь: https://github.com/dotnet/runtime/blob/master/src/libraries/System.Text.Json/docs/ReferenceHandling_spec.md

...