2017-10-17 11 views
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上でうまく動作するということです。

私は行方不明です

答えて

3

まあ、...方法/コントローラ

ovet [Produces("text/plain")][Produces("application/json")]を交換するには、このOSのためのソリューションを [Produces("application/json")] 2.0、.NETのコアには、変更されていると、ので、私はそれが二回連載していたJSONに文字列の出力をシリアル化されたことが表示されます
関連する問題