2009-02-08 34 views
7

Tôi đã có một tập dữ liệu được mã hóa json mà tôi truy xuất qua ajax. Một số điểm dữ liệu mà tôi đang cố gắng truy xuất sẽ trả về giá trị rỗng hoặc rỗng.null/rỗng json làm thế nào để kiểm tra cho nó và không đầu ra?

Tuy nhiên, tôi không muốn những giá trị rỗng hoặc trống sẽ được hiển thị cho người dùng cuối hoặc chuyển sang các chức năng khác.

Những gì tôi đang làm bây giờ là kiểm tra cho

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

Tuy nhiên, đối với mỗi dòng tôi thấy mình đi qua nhiều nếu báo cáo, và có vẻ như rất không hiệu quả. Có cách nào tốt hơn để làm điều này?

Trả lời

15

Vì JSON chỉ đơn giản là định dạng dữ liệu, thực sự không có cách nào để biết thành viên dữ liệu nào của bạn sẽ rỗng trừ khi bạn kiểm tra chúng một cách rõ ràng. Bạn luôn có thể cấu trúc lại mã của bạn để làm cho nó nhỏ gọn hơn và dễ đọc hơn, nhưng bạn sẽ phải kiểm tra từng mục một cách rõ ràng nếu bạn không biết trước sẽ rỗng và sẽ chứa dữ liệu.

Trong khi tôi không biết những gì mã của bạn là phải làm, đây là một ví dụ về cách bạn có thể cấu trúc lại nó để làm cho nó nhỏ gọn hơn:

var data = { Name: "John Doe", Age: 25, Address: null, CityState: "Denver, CO" }; 
for (member in data) { 
    if (data[member] != null) 
     // Do work here 
} 
+1

bạn không sử dụng hasOwnProperty để kiểm tra xem tài sản thuộc đối tượng hoặc thêm vào thông qua chuỗi nguyên mẫu, vì lý do đó tôi đem lại cho bạn dấu hiệu xuống ... – vsync

4

Tôi không hoàn toàn chắc chắn về những gì bạn muốn làm ... bạn nói rằng bạn không muốn vượt qua chúng vào các chức năng khác vì vậy tôi giả sử bạn muốn xóa chúng:

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]; 
     } 

    } 
} 

Vui lòng cung cho hasOwnProperty là để đảm bảo rằng nó không phải là một số tài sản từ chuỗi tài sản.

1

Hoặc bạn chỉ có thể sử dụng

int data=0; 
try{ 
    data=json.getInt("Data"); 
}catch(Exception e){ 
    data=anydefaultdata; 
} 
Các vấn đề liên quan