Как распарсить ответ от сервиса

Всем привет. Прошу не пинать в C# я новичОк :)

Подскажите пожалуйста, как распарсить ответ ? Я делаю запрос на сторонний сервис , который возвращает мне ответ в JSON формате. Тоесть строку.

Как и этой страке мне получить нужные значения ?

Вот пример кода :

 public GetFgoQueryHandler(IMapper mapper, DepartmentApiClient departmentApiClient, UserApiClient apiUserClient, FiasClient fiasApiClient)
    {
        _mapper = mapper;
        _departmentApiClient = departmentApiClient;
        _apiUserClient = apiUserClient;
        _fiasApiClient = fiasApiClient;
    }

    public async Task<List<FgoResponse>> Handle(GetFgoRequest token, CancellationToken cancellationToken)
    {
        var departments = await _departmentApiClient.GetReception(token.accessToken, OdpgDepartmentType.Fgo);
        var result = departments.ConvertAll(d => new FgoResponse
        {
            Name = "Федеральные государственные органы",
            Organ = d.Name,
            ContactsPhone = GetContacts(d.Users.Where(u => u.InOdpgRole(OdpgUserRole.Reception)).FirstOrDefault()),
            ReceptionContacts = GetAddressAsync(d.Addresses.FirstOrDefault(), token)

        });
        return result;
    }

    private async Task<string> GetAddressAsync(DepartmentAddressDto? address, GetFgoRequest token)
    {
        if (address != null)
        {
            var fullAddress = await _fiasApiClient.GetFullAddress(token.accessToken,
                new ESOG.Fias.Api.Model.GetFullAddressRequest
                { BaseAddressId = address.FiasId, Building = address.Building, Room = address.Room });
            var m = JsonConvert.DeserializeObject(fullAddress);
            var res = m.result;
            return fullAddress;
        }
        return "";
    }
    private List<string> GetContacts(UserDto? user)
    {
        var phones = new List<string>();
        //todo
        if (user != null)
        {
       
            foreach (var item in user.UserPhones)
            {
                phones.Add(item.FullNumber);
            }
        }
        else
        {
            return null;
        }
        return phones;
    }

И адреса тоже в страшном виде, мне тут нужно поле result. В конеретном примере оно пустой, но в целом там будет нужная инфомрация потом (GetAddressAsync) :

{ "result": "", "id": 1382, "exception": null, "status": 5, "isCanceled": false, "isCompleted": true, "isCompletedSuccessfully": true, "creationOptions": 0, "asyncState": null, "isFaulted": false }

Добавил такую модель :

    public class DepartmentAddress
{
    public string? Result { get; set; }
    public int Id { get; set; }
    public int? Exception { get; set; }
    public int? Status { get; set; }
    public bool? IsCanceled { get; set; }
    public bool? IsCompleted { get; set; }
    public bool? IsCompletedSuccessfully { get; set; }
    public int? CreationOptions { get; set; }
    public int? AsyncState { get; set; }
    public bool? IsFaulted { get; set; }
}

И такой код :

var res = JsonConvert.DeserializeObject<DepartmentAddress>(fullAddress);

и теперь при запросе у меня постман возращает ошибку при десериализации.

Однако, когда я ставлю точку останвоа напротив адреса, и клацаю на лупу в свойстве - у меня там чистый адрес. Без все остальных свойств , описанных выше


Ответы (0 шт):