如何使用Javascript排除不存在的JSON数据?
我正在使用Javascript获取加载一些JSON数据。我想在HTML文档中整齐地显示数据 我在解析某些内容时遇到了一些问题。我试图解析的大多数数据对象都包含图像,我需要加载这些图像。当对象不包含图像时,问题就会出现。此时发生的事情是加载前3个图像(因为它们存在),然后第4个对象没有图像,循环停止加载其余图像(第5个、第6个等) 有人能看一下这个,给我一个正确的方向吗如何使用Javascript排除不存在的JSON数据?,javascript,arrays,json,api,fetch,Javascript,Arrays,Json,Api,Fetch,我正在使用Javascript获取加载一些JSON数据。我想在HTML文档中整齐地显示数据 我在解析某些内容时遇到了一些问题。我试图解析的大多数数据对象都包含图像,我需要加载这些图像。当对象不包含图像时,问题就会出现。此时发生的事情是加载前3个图像(因为它们存在),然后第4个对象没有图像,循环停止加载其余图像(第5个、第6个等) 有人能看一下这个,给我一个正确的方向吗 fetch(url)。然后(函数(响应){ 返回response.json(); stringify(数据); }) .the
fetch(url)。然后(函数(响应){
返回response.json();
stringify(数据);
})
.then(功能(数据){
控制台日志(数据);
对于(变量i=0;i });
如果添加,请检查媒体和图像url是否存在。该错误可能是由于试图访问丢失的媒体[0]
上的url
if(data[i] && data[i].media && data[i].media[0] && data[i].media[0].url) {...}
如果数据[i]
为falsy(在本例中未定义),则该条件将从左到右进行评估,它将不会尝试访问数据[i]。媒体
,依此类推
例如:
fetch(url).then(function(response) {
return response.json();
})
.then(function(data) {
console.log(data);
for (var i = 0; i < data.length; i++) {
var listItem = document.createElement("li");
var imgGrabber = document.createElement("img");
listItem.innerHTML = data[i].title;
if (data[i] && data[i].media && data[i].media[0] && data[i].media[0].url) {
imgGrabber.src = data[i].media[0].url;
}
ul.appendChild(listItem);
listItem.appendChild(imgGrabber);
}
});
fetch(url)。然后(函数(响应){
返回response.json();
})
.then(功能(数据){
控制台日志(数据);
对于(变量i=0;i
如果添加,请检查媒体和图像url是否存在。该错误可能是由于试图访问丢失的媒体[0]
上的url
if(data[i] && data[i].media && data[i].media[0] && data[i].media[0].url) {...}
如果数据[i]
为falsy(在本例中未定义),则该条件将从左到右进行评估,它将不会尝试访问数据[i]。媒体
,依此类推
例如:
fetch(url).then(function(response) {
return response.json();
})
.then(function(data) {
console.log(data);
for (var i = 0; i < data.length; i++) {
var listItem = document.createElement("li");
var imgGrabber = document.createElement("img");
listItem.innerHTML = data[i].title;
if (data[i] && data[i].media && data[i].media[0] && data[i].media[0].url) {
imgGrabber.src = data[i].media[0].url;
}
ul.appendChild(listItem);
listItem.appendChild(imgGrabber);
}
});
fetch(url)。然后(函数(响应){
返回response.json();
})
.then(功能(数据){
控制台日志(数据);
对于(变量i=0;i
也许我错了,但我想只有一个例外——无法获取未定义的属性“url”。那么,也许只是增加条件
if(data[i].media) { // or data[i].media[0] - depends on JSON structure
imgGrabber.src = data[i].media[0].url;
listItem.appendChild(imgGrabber);
}
也许我错了,但我想只有一个例外——无法获取未定义的属性“url”。那么,也许只是增加条件
if(data[i].media) { // or data[i].media[0] - depends on JSON structure
imgGrabber.src = data[i].media[0].url;
listItem.appendChild(imgGrabber);
}
“停止”是什么意思?你是说你犯了个错误?当对象中有或没有图像时,可以显示JSON中的差异吗?这些记录上可能不存在媒体
属性,或者它存在但没有项目?我猜,在尝试访问JSON之前,您可能只需要使用if
来检查JSON中是否存在该属性,但根据可用的信息,它并不是100%清楚。请尝试imgGrabber.src=data[I].media&&data[I].media.length?数据[i]。媒体[0]。url:代码>当数据[i]。媒体未定义或为空数组时,这可防止出现错误。使用if
语句“停止”是什么意思?你是说你犯了个错误?当对象中有或没有图像时,可以显示JSON中的差异吗?这些记录上可能不存在媒体
属性,或者它存在但没有项目?我猜,在尝试访问JSON之前,您可能只需要使用if
来检查JSON中是否存在该属性,但根据可用的信息,它并不是100%清楚。请尝试imgGrabber.src=data[I].media&&data[I].media.length?数据[i]。媒体[0]。url:代码>当数据[i]。媒体为未定义的或空数组时,这可防止出现错误。使用if
语句