2012-09-03 13 views
9

Nie mogę dowiedzieć się, jak określić, czy element wewnątrz tablicy json ma wartość NULL. Aby sprawdzić, czy sama JSONObject jest null, po prostu użyć:Jak sprawdzić, czy element JSONArray ma wartość null

jsonObject.isNullObject(); 

Ale gdy obiekt jest tablicą i chcę, aby sprawdzić, czy jeden z elementów tej tablicy jest null, to nie działa:

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

Nie ma również dostępnej metody isNull dla elementów tablicy. Jak sprawdzić, czy wartości wewnątrz jsonarray są zerowe? Może pomóc wiedzieć, że omijam obiekt zerowy z javascript. Być może wartość null nie oznacza tego samego w java, gdy jest przekazywana z javascript w formacie json, ale próbowałem także umieścić nawiasy wokół wartości zerowej i nadal nie działa.

Zamieszczam aktualny kod źródłowy, aby uczynić to bardziej zrozumiałym. Obiekt jsonObject jest częścią jsonArray, a obiekt ma wiele wartości, ponieważ sam jest obiektem.

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()); 
} 

Odpowiedz

13

Domyślam się, że json przekazuje wartości puste jako łańcuchy, więc nie można sprawdzić wartości null jako elementu java. Zamiast traktować wartość null jako ciąg jak sprawdzić ten sposób:

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

Mam zaktualizowany fragment kodu w oryginalnym pytanie do wersji roboczej.

14

Spróbuj .isNull():

Dla przykładu:

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

Jednak, aby odpowiedzieć tytuł to pytanie "Jak sprawdzić, czy element JSONArray jest pusta", użyj .equals()

Aby sprawdzić, czy indeks 1 ma wartość null:

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

try metoda JSONArray za

public boolean isNull (int index) 

W rzeczywistości wykorzystuje "null" string w porównaniu do zawartości

JSONObject.NULL.equals(this.opt(index)); 
Powiązane problemy