我有一个json url,它以
格式返回数据{
"photos" : [
{
"id": 1, "image":"https://path/to/my/image/1.jpg"
},
{
"id": 2, "image":"https://path/to/my/image/2.jpg"
}
]
}
我在javascript函数中使用json,需要对其进行操作以删除根密钥。即我想要一些看起来像
的东西[
{
"id": 1, "image":"https://path/to/my/image/1.jpg"
},
{
"id": 2, "image":"https://path/to/my/image/2.jpg"
}
]
我一直在用各种方法进行攻击,并在SO上提到了几个类似的帖子,但似乎没有任何效果。以下似乎应该如此。
var url = 'http://path/to/my/json/feed.json';
var jsonSource = $.getJSON( url );
var jsonParsed = $.parseJSON(jsonSource);
var jsonFeed = jsonParsed.photos
我做错了什么?
答案 0 :(得分:5)
那里有几个问题。
这是无效的JSON,有两种不同的方式。 A):
之后的"photos"
意味着它是属性初始值设定项,但是当它应该在对象([...]
)内时,它在数组({...}
)内。 B)"
键前面有额外的images
个字符。所以首先要解决这个问题。
您尝试使用$.getJSON
的返回值,就好像它是包含JSON文本的字符串一样。但$.getJSON
会返回jqXHR
个对象。你需要给它一个成功的回调。该回调将使用对象图调用,JSON会自动为您解析。
假设JSON修复如下:
{
"photos": [
{
"id": 1,
"image": "https://path/to/my/image/1.jpg"
},
{
"id": 2,
"image": "https://path/to/my/image/2.jpg"
}
]
}
然后:
$.getJSON(url, function(data) {
var photos = data.photos;
// `photos` now refers to the array of photos
});