[英]Handle with null JSON object
我是JSON和jQuery的新手。 我正在做的是从api获取JSON对象并将其显示为表格。 但是JSON数组中的某些元素为null
例如; JSON数组如下所示:
[
{"key":"first" , "name" :{"last":"Owen"} , "age" :{"number": 18} },
{"key":"second" , "name" : null , "age" :{"number": 20} } ,
{"key":"third" , "name" : {"last":"Jay"} , "age" :null }
]
所以要输入到表中,我这样做:
$.each(jsonarray, function(i,data){
$("<tr>").append(
$.('<td>').text(data.key),
$.('<td>').text(data.name.last),
$.('<td>').text(data.age.number)).appendTo('.table');
});
所以问题是他们会得到错误:
无法读取null的属性“ last”; 无法读取null的属性“ number”
因为在第二个和第三个元素中,名称为null,年龄为null。 因此,没有要添加的名称name.last
和age.number
这样的东西。
我想要的是每当他们得到类似的东西时,他们会自动返回“无信息”以添加到表中
但是,我仍然不知道该怎么做。 我确实尝试编写了一个要检查的功能。 例如这样:
function check1(datum){
if (datum !== null && datum !== undefined){
return datum.last;
}
else {
return "No Information"
}
}
function check2(datum){
if (datum !== null && datum !== undefined){
return datum.number;
}
else {
return "No Information"
}
}
但这非常繁琐,因为我需要编写2个单独的函数进行检查(名称为1,年龄为1)。 我只是想知道有没有一种优雅的方法可以为所有人完成一项功能?
能满足您的需求吗?
var noDataTip = 'No Information';
$.each(jsonarray, function(i,data) {
$("<tr>").append(
$('<td>').text(data.key),
$('<td>').text( (data.name && data.name.last) || noDataTip),
$('<td>').text( (data.age && data.age.number)) || noDataTip).appendTo('.table');
});
尝试这个。 :)
$.each(jsonarray, function(i,data){
if(data.key === undefined || data.key === null){
data.key = 'none';
}
if(data.name === undefined || data.name === null){
data.name = 'none';
}
if(data.age === undefined || data.age === null){
data.age = 'none';
}
$("<tr>").append(
$.('<td>').text(data.key),
$.('<td>').text(data.name.last),
$.('<td>').text(data.age.number)
).appendTo('.table');
});
$.each(jsonarray, function(i,data){
$("<tr>").append(
$.('<td>').text(data.key),
$.('<td>').text( data.name && data.name.last ? data.name.last : "No Information"),
$.('<td>').text( data.age && data.age.number ?
data.age.number : "No Information").appendTo('.table');
});
我将编写一个对null进行简单检查的函数:
function checkForNull(item) {
var data = "No information";
if(!item === null) {
data = item;
}
return data;
}
然后,您可以按以下方式使用它:
$.('<td>').text(checkForNull(data.key))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.