我有一个json编码的数据集,我通过ajax检索。我正在尝试检索的一些数据点将返回null或为空。
但是,我不希望将null或empty显示给最终用户,或者传递给其他函数。
我现在正在做的是检查
if(this.cityState!='null'){ // do some stuff here }
然而,对于每一行,我发现自己经历了多个if语句,而且效率似乎非常低。有更好的方法吗?
答案 0 :(得分:17)
由于JSON只是一种数据格式,除非您明确检查它们,否则实际上无法知道哪些数据成员为空。您可以随时重构代码,使其更紧凑,更易于阅读,但如果您事先不知道哪些项将为空,哪些将包含数据,则必须明确检查每个项目。
虽然我不知道您的代码应该做什么,但这里有一个示例,说明如何重构它以使其更紧凑:
var data = { Name: "John Doe", Age: 25, Address: null, CityState: "Denver, CO" };
for (member in data) {
if (data[member] != null)
// Do work here
}
答案 1 :(得分:4)
我不完全确定你想要做什么......你说你不想把它们传递给其他功能所以我假设你要删除它们:
var data = {a:"!",b:"null", c:null, d:0, e:"", hasOwnProperty:"test"};
var y;
for (var x in data) {
if ( Object.prototype.hasOwnProperty.call(data,x)) {
y = data[x];
if (y==="null" || y===null || y==="" || typeof y === "undefined") {
delete data[x];
}
}
}
检查hasOwnProperty是为了确保它不是属性链中的某些属性。
答案 2 :(得分:2)
或者您可以使用
int data=0;
try{
data=json.getInt("Data");
}catch(Exception e){
data=anydefaultdata;
}