2012-09-03 14 views
9

Bir json dizisinde yaşayan bir öğenin null olduğunu nasıl belirleyeceğimi anlayamıyorum.JSONArray Elemenin null olup olmadığını nasıl kontrol edilir

jsonObject.isNullObject(); 

Ancak nesne bir dizidir ve ben bu dizinin elemanlarından biri boş olup olmadığını kontrol etmek istediğinizde, bu işe yaramazsa: JSONObject nesnesi kendisi boş olup olmadığını kontrol etmek için, sadece kullanım

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

Ayrıca, bir dizinin öğelerinde hiçbir isNull yöntemi yoktur. Jsonarray içindeki değerlerin boş olup olmadığını nasıl kontrol edebilirim? Javascript'ten boş bir nesneyi geçirdiğimi bilmek yardımcı olabilir. Belki null, javascript'ten json formatında geçtiğinde javada aynı şey demek değildir, fakat parantezleri null etrafında da denedim ve hala çalışmıyor.

Bunu daha açık hale getirmek için bazı gerçek kaynak kodlarını gönderiyorum. JsonObject jsonArray öğesinin bir parçasıdır ve nesnenin birden fazla değeri vardır, çünkü kendisi bir nesnedir.

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

cevap

13

Sanırım json boş değerleri dizeler olarak geçirir, böylece boş bir java öğesi olarak denetleyemezsiniz. Ben çalışan sürümüne özgün söz konusu kod pasajını güncelledik

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

: Yerine çek olarak bir dize olarak bu şekilde boş değer davranın. senin Örneğin

:

14

.isNull() deneyin

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

Ancak bu soruya, "Bir JSONArray öğesi boş olup olmadığını nasıl anlatmak için" unvanını cevaplamak için kullandıkları .equals()

Yani, 1 numaralı dizinin sıfır olup olmadığını kontrol etmek için:

0

deneyin Aslında

public boolean isNull (int index) 

JSONArray yöntemi, bu "boş" dizesi, içeriğin

JSONObject.NULL.equals(this.opt(index)); 
karşılaştırarak kullanır
İlgili konular