我有这种格式的数据:
var data = "{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}";
html 还有更多内容,但这里不需要。我尝试这样做:
data = JSON.parse(data)
此错误给出:
Uncaught SyntaxError: Unexpected token l
由于样式中多了一个“。你如何正确解析这个?
编辑:
我从服务器获取数据,因此我在 Websocket 中接收数据,例如:
sock.onmessage = function(message) {
//Need to parse this.
data = message.data
console.log(typeof data); // = string
console.log(data);
//console.log(data) result
//{"attr":"value","html":"<div><div style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;">Content</div></div>"}
}
最佳答案
这里有两个非常相似的问题。第一个是您简化问题中示例的方式。
var data = "{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}";
这不是有效的 JavaScript。最简单的解决方法是在整个内容中使用单引号。您还可以使用反斜杠 \
转义引号。试试这个:
var data = '{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}';
现在你遇到的第二个问题是这个 JSON 完全无效并且不明确。原因是 html
部分中的引号未正确转义。除非您知道这种格式永远不会改变,否则您对此无能为力。在这种情况下,您可以编写自己的 hackjob 伪 JSON 解析器。 不要这样做。
您需要与向您提供垃圾数据的人交谈。您的代码应该如何知道 html
变量值是否完整,或者它是否只是 HTML 中的引号?无论谁设置了此 JSON 数据,都需要修复它。
关于javascript - JS - 用 html 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710729/