我无法解析我无法控制的JSON。我在这做错了什么?
data.json
{
"img": "img1.jpg",
"img": "img2.jpg",
"size": [52, 97]
}
{
"img": "img3.jpg",
"img": "img4.jpg",
"size": [52, 97]
}
jquery的
$.getJSON("data.json",
function(data){
$.each(data, function(i,item){
alert(item.img[i]);
});
});
答案 0 :(得分:9)
JSON形成错误。它应该是这样的:
{images: [{
"img": "img1.jpg",
"img": "img2.jpg",
"size": [52, 97]
},
{
"img": "img3.jpg",
"img": "img4.jpg",
"size": [52, 97]
}]
}
这就是你解析它时遇到问题的原因。
如果您无法控制它,但是您知道它将采用类似的形式,您可以使用jQuery.ajax
然后通过某些字符串操作将其转换为有效的JSON。可能不理想,但鉴于您无法控制返回的JSON,这是您唯一可以做的事情。
另请注意,您有两个具有相同名称的键。那是另一个问题。
要解决此问题,您可能需要以下内容:
{images: [{
"img1": "img1.jpg",
"img2": "img2.jpg",
"size": [52, 97]
},
{
"img3": "img3.jpg",
"img4": "img4.jpg",
"size": [52, 97]
}]
}
或
{images: [{
"img": ["img1.jpg", "img2.jpg"],
"size": [52, 97]
},
{
"img": ["img3.jpg", "img4.jpg"],
"size": [52, 97]
}]
}
我认为更好的方法是这样的:
{images: [{
img: "img1.jpg",
size: [52, 97]
},
{
img: "img2.jpg",
size: [52, 97]
},
{
img: "img3.jpg",
size: [52, 97]
},
{
img: "img4.jpg",
size: [52, 97]
}]
}
就像我之前提到的,鉴于你无法控制JSON,你几乎无能为力。如果可以的话,我建议您与该网站的管理员/开发人员交谈。他们确实需要被告知他们没有返回有效的JSON。