Оболочка, передающая сложный json, изменяет его

#xaml #xamarin #xamarin.forms #mvvm

Вопрос:

Поэтому у меня есть проблема, когда передача сложного json может быть изменена путем перемещения его с помощью оболочки.

                 string json = JsonConvert.SerializeObject(SelectedAnimeMedia);
                Shell.Current.GoToAsync($"MediaDetailsPage?name={json}");
 

SelectedAnimeMedia-объект моего класса

 public class Media
    {
        public int Id { get; set; }
        public string Description { get; set; }
        public string BannerImage { get; set; }
        public int? AverageScore { get; set; }
        public int Favourites { get; set; }
        public int? Episodes { get; set; }
        public airingSchedule airingSchedule { get; set; }
        public MediaScheduleNode nextAiringEpisode { get; set; }
        public ListEntry mediaListEntry { get; set; }
        public TitleType Title { get; set; }
        public CoverImageType CoverImage { get; set; }
        public Date startDate { get; set; }
    }
 

Мне нужно сериализовать, чтобы передать его с помощью этого метода оболочки. Это то, что я передаю

 "{"Id":129898,"Description":"The world's number one assassin has been reincarnated as the eldest son of a family of aristocrat assassins. In exchange for being reincarnated in another world, a goddess has imposed upon him one condition. \"Kill the Hero who is prophesied to destroy the world.\" <br>\n<br>\nThis was to be the mission in his new life. The synergistic effect of the vast knowledge and experience he gained that made all manner of assassinations possible in the modern world, and the secret techniques and magic of the fantasy world's most powerful family of assassins turn him into the greatest assassin of all time.<br>\n<br>\n(Source: Crunchyroll)","BannerImage":null,"AverageScore":null,"Favourites":253,"Episodes":null,"airingSchedule":null,"nextAiringEpisode":null,"mediaListEntry":null,"Title":{"Romaji":null,"English":null,"Native":null,"UserPreferred":"The World's Finest Assassin Gets Reincarnated in Another World as an Aristocrat"},"CoverImage":{"Medium":null,"Large":"https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx129898-FRUzDtPhRigt.jpg"},"startDate":null}"
 

Это то, что получено:

 "{"Id":129898,"Description":"The world's number one assassin has been reincarnated as the eldest son of a family of aristocrat assassins. In exchange for being reincarnated in another world, a goddess has imposed upon him one condition. /"Kill the Hero who is prophesied to destroy the world./" <br>/n<br>/nThis was to be the mission in his new life. The synergistic effect of the vast knowledge and experience he gained that made all manner of assassinations possible in the modern world, and the secret techniques and magic of the fantasy world's most powerful family of assassins turn him into the greatest assassin of all time.<br>/n<br>/n(Source: Crunchyroll)","BannerImage":null,"AverageScore":null,"Favourites":253,"Episodes":null,"airingSchedule":null,"nextAiringEpisode":null,"mediaListEntry":null,"Title":{"Romaji":null,"English":null,"Native":null,"UserPreferred":"The World's Finest Assassin Gets Reincarnated in Another World as an Aristocrat"},"CoverImage":{"Medium":null,"Large":"https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx129898-FRUzDtPhRigt.jpg"},"startDate":null}"
 

Пожалуйста, скопируйте и вставьте его в свой блокнот. Обратите внимание на испорченные косые черты, которые не позволяют мне десериализовать его. Особенно в поле описания, но они ошибаются во всем json.

Я могу это сделать Shell.Current.Navigation.PushAsync(new MediaDetailsPage(selectedAnimeMedia));

Но в чем разница между этим и тем, что основано на строках? Является ли этот метод также толчком к стеку оболочки? Поскольку это нигде не упоминается в документах, что странно. Для этого не требуется, чтобы я регистрировал маршрут. И я не знаю, должен ли я его использовать или это вызовет у меня проблемы на линии

Каков был бы правильный способ просто передавать данные, имеющие такие сложные строки, с помощью оболочки? Или, может быть, мне не следует использовать строки.

Комментарии:

1. строка запроса обычно предназначена для простых типов, а не для сложных json, которые нарушат схему кодирования

2. Должен ли я использовать метод, который я описал в конце? Передать объект туда, а затем просмотреть модель? Я не знаю, почему это вообще не объясняется в документах. И в чем будет заключаться основная разница в навигации и в том, что происходит за

3. Разложите свой объект на несколько параметров запроса. Вы слишком много вкладываете в параметр name запроса, и Shell пытается закодировать эти данные, чтобы передать их, не нарушая формат строки маршрута.

4. Это будет работать с более простыми объектами. Что делать, если я получу список объектов, состоящих из трех строк? Это может быть маленький, но может быть и большой

5. Как насчет создания локальной базы данных, возможно? И отправьте строку, которая позволит мне идентифицировать нужный объект, или это огромная трата времени, чтобы просто передавать объект между страницами?