{
name: "Tesla",
gender: "Male",
info: {age: 88, interest: "Science"},
x:
[
{y: 1},{y: 2}
]
}
我用
var jsonData = eval("("+xmlhttp.responseText+")");
这可以在属性周围解析没有" "
的JSON文件。
但JSON.parse(xmlhttp.responseText)
{
"name": "Tesla",
"gender": "Male",
"info": {"age": 88, "interest": "Science"},
"x":
[
{"y": 1},{"y": 2}
]
}
JSON属性必须由" "
包围。
有没有办法在没有" "
的情况下这样做?
答案 0 :(得分:4)
不,没有办法解决它。
没有引用属性,它是无效的JSON。您的第一个示例是JavaScript对象文字。
答案 1 :(得分:2)
通过不在属性周围引用您的JSON不再有效。这样做只会导致问题。
答案 2 :(得分:2)
JSON是一种数据格式,表示为JavaScript的子集。
JSON规范要求将属性名称表示为字符串(必须引用)。 JavaScript对象文字语法还提供了使用标识符的选项。
eval
可以将您的属性名称作为标识符处理,因为JavaScript中允许使用该语法,eval
将代码评估为JavaScript。另一方面,JSON.parse
期望真正的JSON,这是你必须给它的。
引号是必需的,请保留它们。
答案 3 :(得分:1)
eval
是邪恶的。检查this以获取阅读。但是,您使用的是JSON.parse
,需要更新版本的浏览器或json2.js
脚本。
但在我的偏好中,我喜欢使用jQuery如何使用new Function()
将JSON反序列化为对象。请考虑以下代码:
var jsonData = new Function('return ' + xmlhttp.responseText)();
这可以使用和不使用“”:)