овет метод / контроллер
енес свой веб-сервис на .NET Core 2.0, он работает нормально, но у меня проблема с получением ответа в виде строки json.
Метод по API:
[HttpGet]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(typeof(EntityNotFoundErrorResult), 404)]
public async Task<IActionResult> GetCurrenciesAsync()
{
var result = await service.GetByTypeAsync(ObjectType.Currency.ToString());
return Ok(result);
}
который возвращает правильный JSON какresult
:
"{\"elements\": [{\"Id\": \"1\", \"Symbol\": \"PLN\"},{\"Id\": \"2\", \"Symbol\": \"SIT\"}]}"
Тогда на клиенте я пользуюсьстек обслуживания чтобы получить мои валюты в виде строки:
public virtual IEnumerable<CurrencyData> GetCurrencies()
{
string response = null;
try
{
response = api.Get<string>("/Currencies");
}
catch (Exception e)
{
}
return string.IsNullOrEmpty(response) ? null : JsonConvert.DeserializeObject<TempCurrencyClass>(response).elements;
}
Иresponse
выглядит так:
"\"{\\\"elements\\\": [{\\\"Id\\\": \\\"1\\\", \\\"Symbol\\\": \\\"PLN\\\"},{\\\"Id\\\": \\\"2\\\", \\\"Symbol\\\": \\\"SIT\\\"}]}\""
ТакJsonConvert.DeserializeObject
выдает исключение десериализации:
Newtonsoft.Json.JsonSerializationException
Но это работает, когда я десериализирую ответ на жало и на то, чтобы повиноваться:
var x = JsonConvert.DeserializeObject<string>(response);
var deserialized = JsonConvert.DeserializeObject<TempCurrencyClass>,;(x).elements;
Я предполагаю, что проблема на клиенте, верно? Что ж, странно то, что на .NET Core 1.1 все работает нормально.
Что мне не хватает?