Как json сериализовать объект, содержащий объекты в dot net core web api?

В веб-API Dot net core У меня есть действие GetById.

[HttpGet]
[Route("Get")]
    public IActionResult Get(long ID)
    {
        ResultResponse oResultResponse = new ResultResponse();
        IActionResult response;
        try
        {
            ContractReleaseRequest result = service.GetByID( ID);
            ;
            oResultResponse.Returned = result;
            oResultResponse.IsSucceed = true;
            oResultResponse.ErrorID = EnumServiceStatus.NoError;
        }
        catch (Exception e)
        {
            oResultResponse.IsSucceed = false;
            oResultResponse.ErrorID = EnumServiceStatus.ExceptionError;
            oResultResponse.ErrorMessage = e.Message;
        }

        response = this.Ok(oResultResponse);
        return response;
    }

а модель ContractReleaseRequest - это.

public partial class ContractReleaseRequest
{
    public ContractReleaseRequest()
    {
        ContractReleaseRequestTranslate = new HashSet<ContractReleaseRequestTranslate>();
        RequestFile = new HashSet<RequestFile>();
    }

    public long ID { get; set; }
    public string RequestNo { get; set; }
    public long? DepartmentID { get; set; }
    public string PurchaseOrderNumber { get; set; }
    public DateTime? CreatedDate { get; set; }
    public long? CreatedBy { get; set; }
    public  DateTime RequestDate { get; set; }
    public bool IsSend { get; set; }
    public DateTime? ModifiedDate { get; set; }
    public long? ModifiedBy { get; set; }
    public bool? IsDeleted { get; set; }

    public Department Department { get; set; }
    public Contract Contract { get; set; }

    public virtual ICollection<ContractReleaseRequestTranslate> ContractReleaseRequestTranslate { get; set; }
    public virtual ICollection<RequestFile> RequestFile { get; set; }
}

И модель

using Trio.Contract.Data.Models;
[MapsFrom(typeof(Data.Models.ContractReleaseRequest), ReverseMap = true)]
public class ContractReleaseRequestModel
{
    //public ContractReleaseRequestModel()
    //{
    //  ContractReleaseRequestTranslate = new HashSet<ContractReleaseRequestTranslateModel>();
    //  RequestFile = new HashSet<RequestFileModel>();
    //}

    public long ID { get; set; }
    public string RequestNo { get; set; }
    public long? DepartmentID { get; set; }
    public string PurchaseOrderNumber { get; set; }
    public DateTime? CreatedDate { get; set; }
    public long? CreatedBy { get; set; }
    public DateTime? ModifiedDate { get; set; }
    public long? ModifiedBy { get; set; }       
    public bool? IsDeleted { get; set; }

    public DateTime RequestDate { get; set; }
    public bool IsSend { get; set; }


    [IgnoreMap]
    //[IgnoreMapToAttribute(typeof(DepartmentModel))]
    public DepartmentModel Department { get; set; }
    public ContractModel Contract { get; set; }
    public ICollection<ContractReleaseRequestTranslateModel> ContractReleaseRequestTranslate { get; set; }
    public ICollection<RequestFileModel> RequestFile { get; set; }

}

Когда я звоню ему с почты, он возвращается

Could not get any response There was an error connecting to http://localhost/ContractApi/api/ContractReleaseRequest/Get?ID=1.

Why this might have happened: The server couldn't send a response:Ensure that the backend is working properly Self-signed SSL certificates are being blocked: Fix this by turning off 'SSL certificate verification' in Settings > General Proxy configured incorrectly Ensure that proxy is configured correctly in Settings > Proxy Request timeout: Change request timeout in Settings > General

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

Вы должны использовать POCO для сериализации. Когда ваш объект Contract содержит объект ContractReleaseRequest и наоборот, Newtonsoft обычно не может сериализовать его из-за циклических отношений.

ilkerkaran 13.09.2018 13:42

Как я могу это сделать?

Hoda Osama 13.09.2018 14:39

Просто не обслуживайте свой объект сущности. Создайте объект DTO и преобразуйте свою сущность в DTO. Затем верните объект DTO. Если вы убедитесь, что это решит вашу проблему, я могу продемонстрировать это в ответе.

ilkerkaran 13.09.2018 15:06

я создал DTO и использовал automapper для сопоставления между ними, затем он вернул ту же ошибку ContractReleaseRequest result = service.GetByID (ID); var obj = Mapping.Mapper.Map <ContractReleaseRequestModel> (результат);

Hoda Osama 13.09.2018 16:31

Можете ли вы обновить свой вопрос с помощью ContractReleaseRequestModel?

ilkerkaran 13.09.2018 16:33

я добавил это к вопросу

Hoda Osama 13.09.2018 16:40

Какие-либо другие объекты модели в ContractReleaseRequestModel содержат свойство ContractReleaseRequestModel?

ilkerkaran 13.09.2018 16:59

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

Hoda Osama 13.09.2018 17:13

@HodaOsama Для этой ошибки, похоже, она связана с Почтальон вместо сериализации. попробуйте запросить этот метод из веб-браузера, вы получите ожидаемый результат? Для этой ошибки попробуйте открыть почтальон-> Настройки-> Общие-> Отключить проверку сертификата SSL. Если таких настроек нет, попробуйте загрузить новый почтальон и перейдите в настройки-> из вкладки файла.

Edward 14.09.2018 08:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
373
0

Другие вопросы по теме