WebAPI 5.2.7 неправильно десериализуется из угловой даты с JSON.Net в базовом классе - PullRequest
0 голосов
/ 09 января 2019

Это проблема конфигурации моего приложения WebAPI.

Когда я передаю эту дату как JSON из моего проекта Angular в мой проект WebAPI, она выглядит следующим образом: created: "2019-01-09T16:16:06.149Z"

После прохождения десериализации в WebAPI это выглядит следующим образом: enter image description here

ОБНОВЛЕНИЕ: Первоначально я скептически относился к тому, что это JSON.Net. Но, посмотрев более внимательно на мои модели, я понял, что IS - это JSON.Net. У меня есть базовый класс, который содержит мои «Созданные», «Обновленные» поля. Адрес наследует этот класс. Домашний адрес наследует адрес. Это должно быть слишком много для JSON.Net. Когда я удалил Inheritance из базового класса и поместил свои созданные и обновленные члены в HomeAddress. Это сработало! Таким образом, этот вопрос действительно относится к способности JSON.Net объединять унаследованные члены, полученные из базового класса.

WebAPIConfig.cs (без настройки JSON.Net для дат) :

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {...}
}

Контроллер WebAPI :

[RoutePrefix("parents")]
public class ParentsController : ApiController
{
    [HttpPost]
    [Route("update")]
    public bool UpdateParentInfo(Parent parent)
    {
        // when I inspect  parent.Homeaddress.Created I get the DateTime().Min
    }
}

HomeAddress.cs, вложенный в Parent.cs :

public class Parent
{
    [JsonProperty("parentID")]
    public Guid ParentID { get; set; }

    [JsonProperty("homeAddress")]
    public Address HomeAddress { get; set; }

    public Parent()
    {
        this.HomeAddress = new HomeAddress();
    }
}

HomeAddress.cs

public class HomeAddress: Address
{
    public HomeAddress(){}
}

Address.cs

public class Address: Base
{
    [JsonProperty("addressID")]
    [Key]
    public Guid AddressID { get; set; }
    [JsonProperty("street1")]
    public string Street1 { get; set; }
    [JsonProperty("city")]
    public string City { get; set; }
    [JsonProperty("state")]
    public string State { get; set; }
    [JsonProperty("zip")]
    public string Zip { get; set; }
}

Base.cs

public class Base
{   
    [JsonProperty("created")]
    public DateTime Created { get; set; }
}

Эта дата находится во вложенном объекте.

Может ли JSON.Net обнаруживать унаследованные члены - это глубоко? Спасибо за помощь.

Мой короткий ответ: Нет. И я убегаю от абстракции так быстро, как могу набрать. Я помещаю свои созданные / обновленные члены в класс HomeAddress. И называя это днем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...