2009-02-08 2 views
7

아약스를 통해 검색 한 json 인코딩 데이터 세트가 있습니다. 내가 검색하려고하는 일부 데이터 포인트는 null 또는 비어 있습니다.null/empty json 어떻게 확인하고 출력하지 않습니까?

그러나 null이나 공백을 최종 사용자에게 표시하거나 다른 기능으로 전달하지 않기를 바랍니다. 내가 지금 뭘하는지

내가 문 경우 자신이 여러 겪고 찾을 각 라인, 그러나

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

확인하고, 매우 비효율적 인 것 같습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

15

JSON은 단순히 데이터 형식이므로 실제로 명시 적으로 확인하지 않는 한 데이터 멤버 중 null이 null임을 알 수있는 방법이 없습니다. 코드를 리팩토링하여 코드를 더 간결하고 읽기 쉽게 만들 수는 있지만, null이 될 데이터와 데이터를 미리 알지 못하는 경우 명시 적으로 각 항목을 확인해야합니다.

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

를 사용할 수 있습니다 ... – vsync

4

내가 무엇을 완전히 확실하지 않다 :

난 당신의 코드가 수행 할 예정이다 모르는 동안

, 여기에 더 컴팩트하게 당신이 그것을 리팩토링하는 방법의 예입니다 hasOwnProperty에 대한 검사가 아니라는 것을 확인하기 위해
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]; 
     } 

    } 
} 

입니다

:하고 싶은 ... 당신은 내가 당신이 그들을 삭제할 가정 있도록 다른 함수에게 넘겨 싶지 않아 말 재산 체인의 일부 재산.

1

아니면이 속성은 개체에 속하거나 그 이유로 내가 당신에게 엄지 손가락을 아래로주는거야, 프로토 타입 체인을 통해 추가 여부를 확인하기 위해 hasOwnProperty를 사용하지 않은

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