Javascript JS-用html解析JSON

Javascript JS-用html解析JSON,javascript,json,Javascript,Json,我有以下格式的数据: var data = "{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}"; 这将导致以下错误: 未捕获的语法错误:意外标记l 由于样式中的附加“0”,您如何正确解析它 编辑: 我从服务器获取数据,因此我在websocket中接收数据,例如: sock.onmessage = function(message) { //Need t

我有以下格式的数据:

var data = "{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}";
这将导致以下错误:

未捕获的语法错误:意外标记l

由于样式中的附加“0”,您如何正确解析它

编辑:

我从服务器获取数据,因此我在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>"}
}
sock.onmessage=函数(消息){
//需要解析这个。
data=message.data
console.log(数据类型);/=string
控制台日志(数据);
//console.log(数据)结果
//{“attr”:“value”,“html”:“Content”}
}
使用“而不是”如下:

str = '<div><div style="left: 0px;"></div></div>'
var data = "{'attr':'value','html': "+JSON.stringify(str)+"}";
str=''
var data=“{'attr':'value','html':”+JSON.stringify(str)+“}”;

更新

继续使用双引号,应该是

var data = "{
  \"attr\":\"value\",
  \"html\":\"<div><div style='left: 0px;'></div></div>\"
}";
var数据=”{
\“attr\”:“value\”,
\“html\”:\“\”
}";
更恰当地说,它是一个字符串:

var data = "{\"attr\":\"value\",\"html\":\"<div><div style='left: 0px;'></div></div>\"}";
var data=“{\“attr\”:\“value\”,\“html\”:\“\”}”;
。。。对于干净的
JSON.parse(数据)


问题在于字符串,而不是解析过程。我总是喜欢
\“
格式,然后对样式等内部内容使用单引号。这对我来说一直很有效。

这里有两个非常相似的问题。第一个问题是你在问题中简化示例的方式

var data = "{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}";
现在,您遇到的第二个问题是,此JSON完全无效且不明确。原因是,
html
部分中的引号没有正确转义。除非您知道此格式永远不会更改,否则对此您真的无能为力。在这种情况下,您可以编写自己的hackjob伪JSON解析器。不要这样做。


你需要去和提供垃圾数据的人谈谈。你的代码如何知道
html
变量值是否完整,或者它是否只是html中的一个引号?设置此JSON数据的人需要修复它。

此值不正确。“”编码html或使用单引号包装html内容(“”)您正在将一个无效的JSON字符串分配给一个变量,然后对其进行解析。这真的存在于您的代码中吗?我想我们可能需要知道您在这里尝试执行的操作。此数据是从服务器发送的,就像我刚刚获取数据一样。在这种情况下如何执行此操作?这里的问题不在于JSON,而在于您的代码中的字符串文字。告诉我们您在做什么这是一个对象文本…不再是字符串文本。数据来自服务器,因此需要进行分析。是的,类似的一些策略会起作用。但是你必须对字符串的html部分进行字符串拆分,分析该部分,然后重新加入。感谢您的方法,但我将继续ct提供程序。是的,这是正确的,但我没有创建数据对象。我应该在一开始就这么说。抱歉。请参阅编辑。没有理由替换HTML属性的引号。双引号
可以双转义以通过两个上下文。输入的格式可以调整吗(最好在获得引号之前进行更改,您可以用斜杠引号替换引号。@Brad,我使用单引号的原因更多是为了视觉一致性……更容易识别内部引号,而不是功能性。谢谢,我们将联系提供商。@shell祝您好运。:-)我还想补充一点,如果他们向你提供垃圾数据,我会强烈质疑他们的任何其他技术能力。注意其他黑客的东西。
var data = "{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}";
var data = '{"attr":"value","html":"<div><div style="left: 0px;"></div></div>"}';