Как распарсить ответ от сервиса
Всем привет. Прошу не пинать в 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);
и теперь при запросе у меня постман возращает ошибку при десериализации.
Однако, когда я ставлю точку останвоа напротив адреса, и клацаю на лупу в свойстве - у меня там чистый адрес. Без все остальных свойств , описанных выше