[英]Javascript: Parse JSON with extra curly braces
我有这个JSON对象:
var dataObj = { data: '\n{ sizeMap:{\nxSizes: "REGULAR|SMALL", \ncurrItemId: "",\ncurrItemSize: "",\nmanufacturerName:"Rapid",\npartNumber: "726G", \nsuitStyle: "R",\nhasSC: "",\nhasInseam:""\n}\n}',type: 'text',next: null,prev: null };
我想读sizeMap
内部对象dataObj.data
值与:
console.log(dataObj.data.sizeMap);
但这是undefined
。 我尝试了JSON.parse(dataObj.data)
,它的错误是:
{ sizeMap:{
^
SyntaxError: Unexpected token s
console.log(dataObj.data)
的输出是:
{ sizeMap:{
xSizes: "REGULAR|SMALL",
currItemId: "",
currItemSize: "",
manufacturerName:"Rapid",
partNumber: "726G",
suitStyle: "R",
hasSC: "",
hasInseam:""
}
}
因此,有多余的花括号来包裹JSON吗? 注意:这在Node.js中
那不是JSON,那是一个JavaScript对象。 JSON是一种用于表示数据的文本格式。
对象内部的字符串data
也不是JSON。 要成为有效的JSON,将需要在所有属性名称周围加上引号:
{
"sizeMap": {
"xSizes": "REGULAR|SMALL",
"currItemId": "",
"currItemSize": "",
"manufacturerName":"Rapid",
"partNumber": "726G",
"suitStyle": "R",
"hasSC": "",
"hasInseam":""
}
}
注意,括号实际上应该在那儿,这不是问题。
该字符串可以用作JavaScript,因此您可以使用eval
将其转换为对象:
eval("(" + dataObj.data + ")").sizeMap
自然,每当您使用eval
时,通常都会采取预防措施。 在执行代码时,必须确保没有人可以在字符串中放入有害的内容。
您的JSON无效。 尝试通过http://jsonlint.com/之类的工具运行它
密钥也需要用引号引起来。
例如
{
"sizeMap": {
"xSizes": "REGULAR|SMALL",
"currItemId": "",
"currItemSize": "",
"manufacturerName": "Rapid",
"partNumber": "726G",
"suitStyle": "R",
"haSC": "",
"hasInseam": ""
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.