Как правильно deserilize при публикации Json в ASP.NET MVC Действия, когда у модели есть подклассы

У меня проблема, когда при отправке JSON на какое-то действие на контроллере MVC это действие принимает модель, в которой есть список элементов. Этими элементами могут быть несколько разных объектов, поскольку все они являются подклассами общего абстрактного класса.

Есть ли способ создать JSON, чтобы при его десерилизации он знал, как преобразовать объекты обратно в правильные типы?

1
Если вы не используете JSON.NET, тогда вы должны указать синтаксический анализ подкласса, используя аннотации или конфигурацию.
добавлено автор ryudice, источник
поэтому с json.net, как вы подключаете его в качестве поставщика стоимости и получаете его для обработки десериализации подклассифицированных объектов?
добавлено автор Keith Nicholas, источник

1 ответы

    void Main()
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new   System.Web.Script.Serialization.JavaScriptSerializer();
 MainModel model = new MainModel(){SimpleProperty = "I am simple property",   ComplexProperty = new ComplexProperty(){Foo="test", Bar="data"}};
   var result = serializer.Serialize(model);

}

public class MainModel
  {
      public string SimpleProperty {get;set;}
      public ComplexProperty ComplexProperty {get;set;}
}

 public class ComplexProperty 
  {
public string Bar {get;set;}
public string Foo {get;set;}

  }

Результат сериализации выглядит следующим образом: {«SimpleProperty»: «Я просто свойство», «ComplexProperty»: {«Бар»: «данные», «Foo»: «test»}}

Надеюсь, это поможет!

0
добавлено
это не то, о чем спрашивал вопрос ...
добавлено автор Keith Nicholas, источник
нет, то, что было нужно, было способом создания графа объектов, который мог бы десериализовать json с подклассами ... например, если в вашем примере у вас был базовый класс Complex, ваш ComplexProperty унаследовал его, и появился еще один класс под названием EvenMoreComplex который наследует его, а затем в MainModel у вас есть ссылка на Complex, который может быть любым из трех типов. В Json.Net есть возможность сериализовать информацию о типе в json, поэтому, когда вы десериализуете ее, она воссоздает правильный тип объекта
добавлено автор Keith Nicholas, источник
Забыл упомянуть, что var query = serializer.Deserialize (результат);
добавлено автор Aadil, источник
О, я думал, что он спрашивает, как десериализовать его на правильный оригинальный тип, который я пропустил в своем первоначальном ответе, но позже опубликовал в комментариях. Это то, что вы искали?
добавлено автор Aadil, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)