【发布时间】:2021-09-10 17:42:34
【问题描述】:
我正在使用 C# 调用一个 REST API,它返回一个包含 HTML 代码的 JSON 对象。这是我感兴趣的对象的示例
{
"Body": "<html class=\"sg-campaigns\"><head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta content=\"text/html; charset=utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1\"><meta content=\"IE=Edge\"><style type=\"text/css\">\r\n<!--\r\nbody ..."
}
我想进一步处理 HTML 代码,但由于它包含各种元素,因此使用 System.Text.Json 反序列化的有效 JSON 字符串失败并出现以下异常
System.Text.Json.JsonReaderException: '<' is an invalid start of a value.
我尝试过使用下面的代码来反序列化 Body 属性的内容
var options = new JsonSerializerOptions()
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
WriteIndented = true
};
var content = JsonSerializer.Deserialize<String>(html, options);
导致错误的元素例如:
\ "< !---
\r,\n,\t
我很想知道如何将上面代码中的 Body 属性清理为仅包含有效的 HTML,也许社区中的某个人对此有所了解。
【问题讨论】:
-
你有没有尝试使用Encoding和Decoding???
-
感谢您的回复!是的,我尝试过将 JsonSerializerOptions 与 Encoder 设置一起使用。我已经用信息更新了我的问题
-
你试过转义回车(
\\r)、制表符(\\t)和换行符(\\n)吗?
标签: c# html json system.text.json