Json Encoding返回奇怪的编码

时间:2019-06-12 22:40:10

标签: c# asp.net-mvc-4

我正在使用以下代码从Web服务获取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();
    } 

我不确定是不是&im假定从其中包含&char的原始数据得出。

例如

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

这是我从上面调用的webservice方法。

[HttpGet]      

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

}    

1 个答案:

答案 0 :(得分:0)

我认为您的问题与该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);
}