我有这个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
中答案 0 :(得分:2)
那不是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
,通常的预习就会适用。当它执行代码时,你必须确保没有人可以在字符串中放置任何有害的东西。