Кодировка JSON, возвращающая странные коды - PullRequest
0 голосов
/ 13 июня 2019

Я использую следующее для получения данных json из веб-службы, которую я создал на веб-сайте mvc и создаю коды для &;Как мне убедиться, что я могу декодировать это, используя метод, описанный ниже.

public async Task<List<BomLookupModel>> GetBomLookups()
{

        List<BomLookupModel> _result = new List<BomLookupModel>();
        try
        {
            var uri = new Uri(string.Format(Constants.GetBomLookupInfo, string.Empty));

            var response = await _client.GetAsync(uri);
           if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                _result = JsonConvert.DeserializeObject<List<BomLookupModel>>(content);
            }
        }
        catch(Exception ex)
        {

            Log.Warn(ex.Message.ToString());
        }
        return _result.ToList();
    } 

Я не совсем уверен, если это и я предполагаю, что из исходных данных, которые имели & char в нем.

Например

{"Reference":"GYNE-D\u0026C","Description":"D\u0026C"},

Это мой метод веб-сервиса, который я вызываю из приведенного выше.

[HttpGet]      

public ActionResult GetBomLookup()
{
        List<BomLookupModel> result = new List<BomLookupModel>();
        result = database.GetBomLookupCodes();
        return Json(result, JsonRequestBehavior.AllowGet);

}    

1 Ответ

0 голосов
/ 13 июня 2019

Я думаю, что ваша проблема связана с кодировкой этого response.Content.ReadAsStringAsync();.

Итак, я предлагаю вам сделать это:

if (response.IsSuccessStatusCode)
{
    var byteArray = await response.Content.ReadAsByteArrayAsync();
    var content = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);
    _result = JsonConvert.DeserializeObject<List<BomLookupModel>>(content);
}
...