1
Webサービスを.NET Core 2.0に移行しましたが、正常に動作しますが、json文字列として応答するのに問題があります。 APIのWebサービスを.NET Core 2.0に移行して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);
}
result
として適切なJSONを返している:
"{\"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 Core 1.1上でうまく動作するということです。
私は行方不明です