【问题标题】:C# Deserialize JSON html stringC#反序列化JSON html字符串
【发布时间】:2011-10-06 06:56:34
【问题描述】:

我正在尝试反序列化 c# 中的 JSON 对象,我的问题是其中一个字段可以包含 html 文本(我计划在之后对其进行清理)。

我正在使用 JavaScriptSerializer 对象进行反序列化,但我收到 “传入的对象无效” 错误(来自 JavaScriptSerializer)。如果我为同一个字段传递纯文本,它可以正常工作,并且对象中的其他字段(包括日期和数组)也可以正确反序列化,所以看起来 html 是它的绊脚石。

我正在使用 JSON.stringify 序列化 Javascript 对象,并通过 jQuery 将其传递到我的页面。

为了传递一个包含 html 的字符串,我应该做些什么?我试过用引号括起来,但没有用。

作为接受的字符串与引发错误的字符串的示例:“测试”很好,而

"<div style="text-align: center;">Test</div>" 不是。 奇怪的是<span>标签似乎也很好。

【问题讨论】:

  • 能否在将 html 字符串绑定到一个 JSON 对象以传回之前对其进行字符串化?
  • 我试过了,没区别。

标签: c# javascript asp.net json deserialization


【解决方案1】:

像这样做一些替换 jsonString.Replace(@"=""\""",@"=\""\""").Replace(@"\""""",@"\""\""").Replace(@"=""""", @"=\""\""")

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案2】:

出于安全原因,您不能传入未经编码的 HTML 字符。如果您在源代码中感到安全,您可以在 MVC.Net 中的函数级别的应用程序中覆盖它。

【讨论】:

  • 我实际上正在使用网络表单,但我猜安全问题应该是相同的。不过,像巴里所说的那样逃避它似乎已经成功了。我知道我需要在之后对结果进行清理。
【解决方案3】:

你能在序列化之前用javascriptescape()函数对html进行编码吗?

【讨论】:

    【解决方案4】:

    您可能必须在 javascript 中编码 URIComponent,然后在 .NET 中编码 HttpServerUtility.UrlDecode

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多