我正在尝试使用jQuery读取JSON文件:
var listOfItems;
$(function() {
$.getJSON('myData.json', function(data) {
listOfItems = data.items;
});
});
这是myData.json:
{
{"source": "Microsoft", "target": "Amazon", "type": "licensing"},
{"source": "Microsoft", "target": "HTC", "type": "licensing"},
{"source": "Samsung", "target": "Apple", "type": "suit"},
{"source": "Motorola", "target": "Apple", "type": "suit"}
}
但是,Chrome Web Developer指出此代码后listOfItems
未定义。为什么?我确信javascript,HTML和JSON文件都位于同一目录中。
答案 0 :(得分:2)
修复JSON。 jsonlint会告诉你出了什么问题。
JSON中的属性名称是字符串(与JavaScript不同,它们可能是标识符),因此它们必须引用。
答案 1 :(得分:1)
这里的主要问题是对于包含数组
使用“{”而不是“[”你应该
[
{source: "Microsoft", target: "Amazon", type: "licensing"},
{source: "Microsoft", target: "HTC", type: "licensing"},
{source: "Samsung", target: "Apple", type: "suit"},
{source: "Motorola", target: "Apple", type: "suit"},
]
答案 2 :(得分:1)
您的myData.json
无效JSON。
它似乎包含一个Object,它本身包含四个对象 - 但这些内部对象没有给出属性名称。
这是有效的
{
"one" : { "source": "Microsoft", "target" : "Amazon", "type" : "licensing" },
"two" : { "source" : "Microsoft", "target" : "HTC", "type" : "licensing" },
"three" : { "source" : "Samsung", "target" : "Apple", "type" : "suit" },
"four" : { "source" : "Motorola", "target" : "Apple", "type" : "suit" }
}
但是,鉴于你的listOfItems
,我认为这不是你想要的。你可能想要一个对象数组。
这是通过使用方括号而不是大括号
来完成的[
{ "source": "Microsoft", "target" : "Amazon", "type" : "licensing" },
{ "source" : "Microsoft", "target" : "HTC", "type" : "licensing" },
{ "source" : "Samsung", "target" : "Apple", "type" : "suit" },
{ "source" : "Motorola", "target" : "Apple", "type" : "suit" }
]
另外,请注意最终项目上的尾随逗号。它打破了一些浏览器/ JavaScript引擎。我不知道JSON解析器是否允许它。
答案 3 :(得分:1)
这是一个异步事件。您不能使用异步事件执行变量赋值,您必须执行在该特定函数中执行的任何操作。否则,请确保它是一个同步事件(通过在JQuery中设置正确的变量),它将等待操作,在这种情况下,GET请求在继续代码之前完成(不推荐)。
答案 4 :(得分:0)
你可以用jQuery.parseJSON();
解析jsonhttp://api.jquery.com/jQuery.parseJSON/
传入格式错误的JSON字符串可能会导致抛出异常。例如,以下是所有格式错误的JSON字符串:
{test: 1} (test does not have double quotes around it).
{'test': 1} ('test' is using single quotes instead of double quotes).
此外,如果您传入任何内容,空字符串,null或未定义,将从parseJSON返回“null”。在浏览器提供JSON.parse的本机实现的地方,jQuery使用它来解析字符串。有关JSON格式的详细信息,请参阅http://json.org/。