2009-02-08 18 views
7

我有一個json編碼的數據集,我通過ajax檢索。我試圖檢索的一些數據點將返回null或空。null /空json如何檢查它並不輸出?

但是,我不希望那些空或空顯示給最終用戶或傳遞給其他功能。

什麼我現在做的是爲

 
    if(this.cityState!='null'){ 
      // do some stuff here 
} 

檢查然而,對於每一行,我發現自己會通過多個if語句,它似乎非常低效。有一個更好的方法嗎?

回答

15

由於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

你沒有使用hasOwnProperty檢查屬性是否屬於對象或通過原型鏈補充,因爲這個原因我給你大拇指朝下... – vsync 2009-12-09 10:21:09

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的檢查,以確保它不來自財產鏈的一些財產。

1

或者你可以只使用

int data=0; 
try{ 
    data=json.getInt("Data"); 
}catch(Exception e){ 
    data=anydefaultdata; 
}