2

我有一个网络应用程序,我允许使用文本字段输入一些大文本。此文本保存到数据库中,然后作为 JSON 响应中的字段发送回用户。在浏览器中,我尝试将其简单地转换为Objectusing JSON.parse,但这有时会失败,具体取决于用户在字段中输入的内容。

我认为现在,文本中有单引号,在我调用JSON.parse它之前,它们已经破坏了浏览器端的 Javascript。

清理这些数据的最佳方法是什么,以便在理想情况下,我可以Object在保存后将其解析回具有最少清理的数据?

4

2 回答 2

5

这不是一个清理问题:您可以很好地将带引号的字符串放在 JSON 中:编码只是将它们转义。

您的问题是编码问题。要在浏览器中构建 JSON 字符串,请使用JSON.stringify。要在服务器端执行此操作,您应该使用(未提及的)服务器端语言/框架提供的工具。

于 2013-01-02T16:47:47.070 回答
2

JSON 最棒的地方在于你不需要清理任何东西。无论您向 JSON 编码器提供什么 - 它总是会输出纯 JSON。显然,JSON 需要进行 HTML 编码,以防您计划在 HTML 页面中使用它。根据 JS 编码器,您需要确保其中没有</script>(例如通过替换/\/)。

你也不需要JSON.parse。JSON 是 JavaScript 的一个子集,因此您可以执行类似的操作(为简单起见,使用 PHP-ish):

<script>
    var obj = <?= json_encode($whatever) ?>;
</script>

如果您真的想将 JSON 作为字符串包含在 JSON 中,请考虑不要这样做。您可以只在其中拥有对象本身 - 无需在 JSON 数据中包含 JSON字符串。但如果你有这个,它也应该总是有效的。

于 2013-01-02T16:48:13.090 回答