1
我已經將我的Web服務遷移到.NET Core 2.0,它工作正常,但我有作爲JSON字符串獲取響應的問題。在API遷移到.NET核心2.0的Web服務和返回json
方法:
[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\"}]}"
然後在客戶端我使用service stack讓我的貨幣爲字符串:
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
但是當我反序列化響應刺痛和objest然後它的工作原理:
var x = JsonConvert.DeserializeObject<string>(response);
var deserialized = JsonConvert.DeserializeObject<TempCurrencyClass>(x).elements;
我猜測,這個問題在客戶端上嗎?奇怪的是,它在.NET核心1.1上工作得很好。
我失蹤了什麼?