【问题标题】:Html in json - how to make it valid (with javascript)?json 中的 Html - 如何使其有效(使用 javascript)?
【发布时间】:2015-01-11 17:40:30
【问题描述】:

我正在使用 json.net 将我的 json 对象自动反序列化为 .net 对象。只要 json 是有效的,它就是一种享受。

但我在 json 中的 html 遇到问题...特殊字符和引号使 json 无效。

如何可靠地编码或转义 html,使其成为有效的 json?我需要一种仅使用 javascript 的方法,因为它是客户端发送到服务器端。

编辑 举一个我的用例示例,我的应用程序中有一个 WYSIWYG,我需要将其中的输入作为 json 对象的一部分发布到我的服务器。

【问题讨论】:

  • 为什么要在json中传递html?
  • @lolbas 刚刚编辑了一个用例。

标签: javascript json json.net html-encode


【解决方案1】:

仅举一个我的用例示例,我的应用程序中有一个 WYSIWYG 我需要作为 json 对象的一部分包含的输入 发布到我的服务器。

假设您在字符串变量中有用户输入:

var userInput = 'Any crap with HTML you can imagine';

您可以简单地对其进行 JSON 编码,以便将其作为有效的 JSON 字符串传输:

var json = JSON.stringify({ value = userInput });

现在生成的对象将如下所示:

{
    "value": "Any crap with HTML you can imagine"
}

在您的服务器上,只需将其映射到具有纯 Value 字符串属性的 POCO。 JSON.stringify 方法将确保正确地将任何输入序列化为有效的 JSON 字符串。

话虽如此,我不太明白您需要将用户输入包装在 JSOn 字符串中,然后使用 JSON.NET 在服务器上反序列化它。我宁愿按原样发送原始输入。这样,您将在服务器上获得完全相同的值,而无需 JSON 序列化的开销。

【讨论】:

  • 我需要它到 json 中的原因不仅仅是我需要同时发送的输入。基本上我正在制作一个电子邮件客户端,所以我需要收件人地址、cc、from、html(来自 WYSIWYG 输入)等等。
  • 当然,但是application/x-www-form-urlencoded 格式(这是标准 HTML 表单使用的格式)非常适合这种情况。您可以同时向服务器发送任意数量的值。
  • 好的,两个问题。 1. re:stringify,当它序列化它时,它仍然是有效的html,即我可以将它用作电子邮件的html,还是我需要以某种方式反序列化它? 2. 我该如何使用 application/x-www-form-urlencoded?
  • JSON.stringify 会将原始值序列化为 JSON 字符串。如果您的原始值不是有效的 HTML,请不要认为此方法会修复它。它将保证您将在安全编码的服务器上获得完全相同的值。就application/x-www-form-urlencoded 而言,您可以使用带有输入元素和submit 按钮的简单<form>。当表单提交到服务器时,只要您的输入元素具有名称,这些值就会被编码并安全地传输到服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2021-08-21
  • 1970-01-01
  • 2022-01-04
  • 2021-07-13
  • 2011-05-25
相关资源
最近更新 更多