Как десериализовать JSON для объектов, унаследовавших классы c# WebAPI Post request - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть класс в этом формате:

[XmlRoot("Root")]
public class XYZ
{
    public string A{ get; set; }

    public string B{ get; set; }

    public string C{ get; set; }

    public string D{ get; set; }

    public ParentClass E{ get; set; }

    public string F{ get; set; }
}

Есть много дочерних классов этого родительского класса для свойства E, и мне нужно, чтобы, если я передам свойства как JSON или XML в запросе на публикацию, который соответствует дочерним объектам, тогда он должен хранить это как E

Но он показывает только те свойства, которые в ParentClass

я видел подобные сообщения в topi c: десериализации Json до производных типов в Asp. Net веб-API

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

Пример тела запроса:

 {
   "E":{
      "ParentClassesProperty": "Foobar"
      "ChildClassesProperty": "Hello World"
   },
   "A":"foobar",
   "B":"hfj",
   "C": "",
   "D":"foo",
   "F":"bar"
 }

Подпись метода контроллера:

 [HttpPost]
 [Route("route")]
 [Authorize(Foo = "foo", Bar = "Bar")]
 public HttpStatusCode NotifyMetrix(XYZ xyz)
...