2012-09-03 86 views
9

json配列内に存在する要素がnullであるかどうかを判断する方法がわかりません。JSONArray要素がnullであるかどうかをチェックする方法

jsonObject.isNullObject(); 

しかし、オブジェクトが配列であると私はその配列の要素の一つがnullであるかどうかを確認したいとき、これは動作しません:jsonObject自体がnullであるかどうかを確認するには、単に使用

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

配列の要素にはisNullメソッドもありません。 jsonarrayの値がnullであるかどうかを確認するにはどうすればよいですか?私はJavaScriptからnullオブジェクトを渡していることを知るのに役立つかもしれません。たぶんJavaがjson形式のjavascriptから渡されたときにnullがjavaで同じことを意味するわけではありませんが、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をJava要素としてチェックすることはできません。代わりにnull値を次のようにチェックして文字列として扱います:

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

元の質問のコードスニペットを有効なバージョンに更新しました。

14

.isNull()をお試しください:

ご例えば:

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

しかし、.equals()

を使用し、 "JSONArray要素がnullの場合どのように伝えるために"、この質問のタイトルに答えるためにしたがって、インデックス1がヌルかどうかを確認する:

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

がJSONArrayの方法実際に

public boolean isNull (int index) 

を試し、それがコンテンツ

JSONObject.NULL.equals(this.opt(index)); 
に比較する文字列 "null" を使用しています
関連する問題