JsonSerializer.Serialize vs JsonResult - Возможный цикл объекта. NET Core 3.1 - PullRequest
0 голосов
/ 24 января 2020

Я прочитал несколько постов здесь и на GitHub относительно. NET Изменения в Core 3.1 в ужесточении допусков сериализации данных. Мое действительное исключение:

System.Text. Json .JsonException: 'Обнаружен возможный цикл объекта, который не поддерживается. Это может быть связано с циклом или если глубина объекта превышает максимально допустимую глубину, равную 0. '

Когда я ищу в Интернете, результатов очень мало, но из того, что я собираю, он говорит мне, что ему не нравятся связанные данные, которые сериализуются. Ну, в прошлом это не было проблемой. Прочитав этот пост , он говорит, что нужно установить сериализатор Newtonsoft Json. Я сделал это и добавил словосочетание в Startup, но получил тот же результат. Итак, я прочитал еще один пост здесь, где участник, который ответил на вопрос, возвратил JsonResult в методе. Я попробовал это в качестве теста, и он работал просто отлично. Проблема в том, что мне нужно вернуть данные (сериализованные) в представление.

Мой вопрос: почему стандарт System.Text.Json.JsonSerializer не может сериализовать мои данные, а JsonResult может? В любом случае, мне просто нужно сериализовать мои данные, и я не могу справиться с этой ошибкой, и любая помощь будет принята с благодарностью. Если мне придется возвращать данные через API и продолжать использовать JsonResult, я согласен с этим, но меня беспокоит, почему он работает.

1 Ответ

0 голосов
/ 24 января 2020

Как подсказал @poke, использование Json.Serialize работает. Я использовал System.Text.Json.JsonSerializer.Serialize(Model) и по какой-то странной причине это выдает то же исключение, даже если опция «Пропустить» установлена ​​при запуске. Требуются дополнительные исследования, но, по крайней мере, это дает мне возможность разобраться.

...