2012-09-03 6 views
9

json 배열 내부에있는 요소가 null인지 확인하는 방법을 알 수 없습니다.JSONArray 요소가 null인지 확인하는 방법

jsonObject.isNullObject(); 

그러나 객체가 배열이고 나는 그 배열의 요소 중 하나가 null인지 확인하고자 할 때,이 작동하지 않습니다 : 다음 된 JSONObject 자체가 null의 경우 확인하려면, 당신은 단순히 사용

jsonArray.get(i).get("valueThatIsNull") == null; 

배열 요소에서 사용할 수있는 isNull 메서드도 없습니다. jsonarray의 값이 null인지 어떻게 확인합니까? 그것은 자바 스크립트에서 null 개체를 통해 전달 오전 것을 도울 수 있습니다. 어쩌면 자바에서 json 형식으로 자바 스크립트에서 전달 될 때 null이 자바에서 동일한 것을 의미하지는 않지만 null 주위에 괄호를 넣으려고했지만 여전히 작동하지 않습니다.

이 내용을 명확히하기 위해 실제 소스 코드를 게시하고 있습니다. jsonObject는 jsonArray의 일부이며 객체 자체가 객체이므로 여러 값을가집니다.

JSONObject mapItem = jsonArray.getJSONObject(i); 
int id = mapItem.has("id") ? mapItem.getInt("id") : -1; 
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
java.util.Date date = null; 
Date sqlDate = null; 
if(mapItem.has("date")) { 
    String dateStr = mapItem.getString("date"); 
    if(!dateStr.equals("null")) { 
    date = dateFormat.parse(mapItem.getString("date").substring(0, 10)); //Convert javascript date string to java. 
    sqlDate = new Date(date.getTime()); 
} 

답변

13

나는 JSON 문자열로 null 값을 전달 같아요, 그래서 당신은 자바 요소로 null을 확인할 수 없습니다. 내가 작업 버전으로 원래의 질문에 코드를 업데이트 한

if(!mapItem.getString("date").equals("null")) { 
    //Value is not null 
} 

대신 체크와 같은 문자열로 이런 식으로 널 값을 취급합니다. 귀하의 예를 들어

:

14

.isNull() 시도

if(!mapItem.isNull("date")) { 
    //Value is not null 
} 

그러나,이 질문에, "는 JSONArray 요소가 null의 경우 확인하는 방법"의 제목을 대답 사용 .equals()

따라서 인덱스 1이 null인지 확인하려면

if (!jsonArray.get(1).equals(null)) { 
    //jsonArray[1] is not null 
} 
0

시도 사실

public boolean isNull (int index) 

JSONArray의 방법은, 그것은 "널 (null)이"문자열 내용

JSONObject.NULL.equals(this.opt(index)); 
에 비해 사용
관련 문제