javascript - JSON.parse() 无法解析带有 HTML 的字符串

标签 javascript json

我检查了很多问题,但没有找到解决方案。

我有 JSON,它是字符串化的(包含 HTML)。 此 JSON 作为字符串存储在元素上。 当我尝试 JSON.parse(str) 时出现错误

我知道错误是由于特殊符号\n\t 等造成的,必须转义。那么如何解析这个 JSON 字符串并将其作为对象。

var obj = {
  "blocks": [{
    "frames_content": "<div id=\"page\" class=\"page\">\n    \n    \t<div class=\"container\" id=\"divider1\">\n    \n    \t\t<div class=\"col-md-12\">\n    \n    \t\t\t<hr class=\"dashed\" data-selector=\"hr.dashed\" style=\"outline: none; cursor: inherit;\">\n    \t\n    \t\t</div><!-- /.col -->\n    \t\n    \t</div><!-- /.container -->\n    \n    </div>",
    "frames_sandbox": false,
    "frames_loaderFunction": "",
    "frames_height": 162,
    "frames_original_url": "/static/admin-users/pages/elements/divider1.html"
  }]
};
document.getElementById("debug").innerHTML = JSON.stringify(obj);
var str = document.getElementById("debug").innerHTML;
var x = JSON.parse(str);
console.log(x);
<div id="debug"></div>

=====更新

如果我用 .text() 读取元素就可以了

我还有一种情况不知道如何解决

<script>
var str = '{"pages":{"index":{"blocks":[{"frames_content":"<div id=\"page\" class=\"page\">\n    \n    \t<div class=\"container\" id=\"divider1\">\n    \n    \t\t<div class=\"col-md-12\">\n    \n    \t\t\t<hr class=\"dashed\" data-selector=\"hr.dashed\" style=\"outline: none; cursor: inherit;\">\n    \t\n    \t\t</div><!-- /.col -->\n    \t\n    \t</div><!-- /.container -->\n    \n    </div>","frames_sandbox":false,"frames_loaderFunction":"","frames_height":162,"frames_original_url":"/static/admin-users/pages/elements/divider1.html"}]}},"responsiveMode":"desktop"}';

var obj = JSON.parse(str);
</script>

我应该用 REGEX 还是什么来转义它们? 最好的方法是什么?

最佳答案

jQuery .html() 自动将引号之类的内容转义为 HTML 实体形式。实际放入 DOM 中的 HTML 如下所示:

{"blocks":[{"frames_content":"<div id="\&quot;

请注意 ",它在浏览器中显示时将是双引号。它是一个 HTML 实体。

要从 DOM 中提取所需的代码而不包含 HTML 实体,请使用 .text() 而不是 .html()

var str=$("#debug").text();

此外,我鼓励您轻松调试代码。 console.log()-ing str 变量的内容将帮助您发现正在发生的事情。

关于javascript - JSON.parse() 无法解析带有 HTML 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064763/

相关文章:

javascript - 为什么模块级返回语句在 Node.js 中起作用?

javascript - IBM Worklight - 无法显示使用 SQL 适配器检索的数据

javascript - 在 Ember 模板中呈现 {{content}} 时出现问题

json - 将 JSON 转换为 grails 对象

javascript - 我可以在 redux 状态下传递简单数组吗?

javascript - node.js Gmail API : Getting Inline/Embedded images

javascript - Ajax JSON.stringify,POST 变量为空

javascript - 在 JavaScript 中使用 JSON.parse() 时出错

javascript - 聚合一个对象,其中每个键的值都是对象数组

python - 如何从Python dict生成特定的JSON?