【发布时间】:2019-07-11 09:20:14
【问题描述】:
所以我有以下 JSON,我正在尝试遍历它,找到与 2019-07-13 14:40:50 GMT 匹配的 sdate,但返回 link 值。
最好的方法是什么?
{
"status": "ok",
"data": {
"Gallery": {
"gallery_id": "***ID***",
"GalleryImage": [{
"image_id": "***ID***",
"gallery_id": "***ID***",
"Image": {
"image_id": "***ID***",
"gallery_id": "***ID***",
"ImageLink": {
"link": "URL"
},
"Iptc": {
"sdate": "2019-07-11 14:40:50 GMT"
}
}
},
{
"image_id": "***ID***",
"gallery_id": "***ID***",
"Image": {
"image_id": "***ID***",
"gallery_id": "***ID***",
"ImageLink": {
"link": "***URL***"
},
"Iptc": {
"sdate": "2019-07-12 14:40:50 GMT"
}
}
},
{
"image_id": "***ID***",
"gallery_id": "***ID***",
"Image": {
"image_id": "***ID***",
"gallery_id": "***ID***",
"ImageLink": {
"link": "***URL***"
},
"Iptc": {
"sdate": "2019-07-13 14:40:50 GMT"
}
}
}
]
}
}
}
我的理解是我需要使用for循环,比如:
for (var key in **ID**) {
if (**ID*.hasOwnProperty(key)) {
}
}
在 Panos K 的帮助下,我有以下工作,但它可能不是最好的方法?
let initArray = {
"status": "ok",
"data": {
"Gallery": {
"gallery_id": "***ID***",
"GalleryImage": [{
"image_id": "***ID***",
"gallery_id": "***ID***",
"Image": {
"image_id": "***ID***",
"gallery_id": "***ID***",
"ImageLink": {
"link": "LINK1"
},
"Iptc": {
"sdate": "2019-07-11 14:40:50 GMT"
}
}
},
{
"image_id": "***ID***",
"gallery_id": "***ID***",
"Image": {
"image_id": "***ID***",
"gallery_id": "***ID***",
"ImageLink": {
"link": "LINK2"
},
"Iptc": {
"sdate": "2019-07-13 14:40:50 GMT"
}
}
},
{
"image_id": "***ID***",
"gallery_id": "***ID***",
"Image": {
"image_id": "***ID***",
"gallery_id": "***ID***",
"ImageLink": {
"link": "LINK3"
},
"Iptc": {
"sdate": "2019-07-13 14:40:50 GMT"
}
}
}
]
}
}
}
function getImgLinksByDate(initArray, date){
return initArray.data
.Gallery
.GalleryImage
.filter(i=>i.Image.Iptc.sdate==date)
.map(i=>i.Image.ImageLink.link);
}
links = getImgLinksByDate(initArray, '2019-07-13 14:40:50 GMT');
links.forEach(function (item) {
var div = document.getElementById('divID');
div.innerHTML += '<div>' + item + '</div>';
});
【问题讨论】:
-
尝试使用 Codable 解析 JSON。