13

JSON配列内に存在する要素がnullであるかどうかを判断する方法がわかりません。jsonObject 自体が null かどうかを確認するには、次のようにします。

jsonObject.isNullObject();

しかし、オブジェクトが配列で、その配列の要素の 1 つが null かどうかを確認したい場合、これは機能しません。

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

また、配列の要素で使用できる isNull メソッドもありません。jsonarray 内の値が null かどうかを確認するにはどうすればよいですか? JavaScript から null オブジェクトを渡していることを知っておくと役立つ場合があります。null は、javascript から json 形式で渡された場合、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());
}
4

3 に答える 3

20

試してください.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
}
于 2013-02-15T23:40:40.293 に答える
15

jsonはnull値を文字列として渡すと思うので、nullをJava要素としてチェックすることはできません。代わりに、null 値を文字列として扱い、次のようにチェックします。

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

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

于 2012-09-04T01:44:57.643 に答える