我从Web服务接收数据,其中一些字符串中包含html实体,例如:
{"prop": "htmlentity - é"}
é
未被解析为é。
我的问题有两个:
DataContractJsonSerializer
?执行此操作的正确方法是什么?答案 0 :(得分:1)
您可以在包含HTML实体的字符串上调用HttpUtility.HtmlDecode。
这不是DataContractJsonSerializer的工作,因为JSON规范只需要引号,反向solidus和要转义的控制字符。
答案 1 :(得分:0)
这不是JSON序列化问题,这是因为数据是通过网络发送的。
序列化不会自动编码HTML实体 参见:
var orig = new MyObj {prop = "htmlentity - é"};
var ser = new DataContractJsonSerializer(typeof(MyObj));
var ms = new MemoryStream();
ser.WriteObject(ms, orig);
var serialized = Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Length);
MessageBox.Show(serialized); // {"prop":"htmlentity - é"}
如果您可以控制Web服务,则可以在服务器端验证这一点。如果没有,请咨询网络服务提供商。