我有一个本地JSON文件,我通过在其前添加var data = ...
转换为JS对象:
var data = {
"people": [
{
"name": "Martin",
"surname": "Smith"
},
{
"name": "Jack",
"surname": "Smith"
}
]
}
我用<script src="data.json" type="text/javascript">
加载它并尝试用:
var h = JSON.parse(data);
我收到以下错误:
SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符
答案 0 :(得分:3)
当你将var data = {
放在它前面时,它就会停止成为JSON并成为JavaScript。 (所以你不应该给它一个.json
文件扩展名,这会鼓励服务器告诉浏览器它是JSON而不是JS。)
在这种情况下,它是一个JavaScript程序,它将对象分配给变量。
JSON.parse
获取包含JSON的字符串,并将其转换为JavaScript对象(或数组或其他数据类型)。
不要解析它。它已经被JavaScript编译器解析。
答案 1 :(得分:1)
在MZN JSON.parse(),您可以看到JSON.parse()
应该用于什么。它用在包含JSON对象的String
上,此方法会将其解析为您的data
变量已经存在的格式。由于您的data
变量已经是JSON格式,您的变量已准备就绪,您不需要JSON.parse()
方法。