反序列化 RD.Details 类型的对象时出错。 “�19.95 Per Person”包含无效的 UTF8 字节

2024-01-09

当我尝试反序列化包含 £ 符号的 JSON 字符串时,出现异常。

反序列化 RD.Details 类型的对象时出错。 “�19.95 Per Person”包含无效的 UTF8 字节。

我记录的字符串如下:

{
   "Promotions":[
      {
         "Name":"Traditional Afternoon Tea £19.95 Per Person",
         "PromotionId":20175,
         "Quantity":2
      }
   ]
}

这就是我反序列化的方式:

var responseJsonSerializer = new DataContractJsonSerializer(typeof(TR));
Stream serializedStream;
string serializedString;
byte[] buffer;

using (WebResponse webResponse = webRequest.GetResponse())
{
    serializedStream = webResponse.GetResponseStream();

    using (StreamReader sr = new StreamReader(serializedStream))
    {
        serializedString = sr.ReadToEnd();
    }

    Report.Log("Message Response JSON Object: " + serializedString);

    buffer = Encoding.Default.GetBytes(serializedString);

    using (MemoryStream stream = new MemoryStream(buffer))
    {
        return responseJsonSerializer.ReadObject(stream) as TR;
    }
}

我不明白为什么 £ 符号被视为无效的 utf8。据我所知,这没有什么问题。


事实证明,这只是将编码行更改为简单的事情

buffer = Encoding.UTF8.GetBytes(serializedString);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反序列化 RD.Details 类型的对象时出错。 “�19.95 Per Person”包含无效的 UTF8 字节 的相关文章

随机推荐