我有一個json編碼的數據集,我通過ajax檢索。我試圖檢索的一些數據點將返回null或空。null /空json如何檢查它並不輸出?
但是,我不希望那些空或空顯示給最終用戶或傳遞給其他功能。
什麼我現在做的是爲
if(this.cityState!='null'){ // do some stuff here }
檢查然而,對於每一行,我發現自己會通過多個if語句,它似乎非常低效。有一個更好的方法嗎?
我有一個json編碼的數據集,我通過ajax檢索。我試圖檢索的一些數據點將返回null或空。null /空json如何檢查它並不輸出?
但是,我不希望那些空或空顯示給最終用戶或傳遞給其他功能。
什麼我現在做的是爲
if(this.cityState!='null'){ // do some stuff here }
檢查然而,對於每一行,我發現自己會通過多個if語句,它似乎非常低效。有一個更好的方法嗎?
由於JSON只是一種數據格式,因此除非明確檢查它們,否則實際上無法知道哪些數據成員將爲空。您始終可以重構代碼以使其更緊湊,更易於閱讀,但如果事先不知道哪些內容將爲空,哪些內容中包含數據,則必須明確檢查每個項目。
雖然我不知道你的代碼是應該做的,這裏是你會如何重構它的例子,使之更加緊湊:
var data = { Name: "John Doe", Age: 25, Address: null, CityState: "Denver, CO" };
for (member in data) {
if (data[member] != null)
// Do work here
}
我不能完全肯定的你想要做......你說你不想傳給他們的其他功能,所以我假設你要刪除它們:
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的檢查,以確保它不來自財產鏈的一些財產。
或者你可以只使用
int data=0;
try{
data=json.getInt("Data");
}catch(Exception e){
data=anydefaultdata;
}
你沒有使用hasOwnProperty檢查屬性是否屬於對象或通過原型鏈補充,因爲這個原因我給你大拇指朝下... – vsync 2009-12-09 10:21:09