org.json.JSONObjectにおけるnullの取扱い

| コメントをどうぞ

java.util.HashMapだとキー自体が存在しない場合はnullを返却してくれるのですが、org.json.JSONObjectはエラーを投げてきます。

Map<String, String> map = new HashMap<String, String>();
JSONObject json = new JSONObject();

Object mo = map.get("test");
<!--more-->

// org.json.JSONExceptionが発生(JSONObject["test"] not found.)
Object jo = json.get("test");

よって構造が不明なJSONObjectの場合、JSONObject # get()する前にキーの存在のチェック等をする必要があります。

キーの存在およびJSON値nullかどうかの判定方法を、以下の例を用いて示します。

JSONの例

{
    a : "json",
    b : 123,
    c : null
}

JSONObject # isNull()

値がnullまたはキー自体が存在しない場合はtrueを返却してくれます。

json.isNull("c") -> true
json.isNull("d") -> true

なお値がnullJSONは、JSONObject.NULLオブジェクトとして扱われます。

jo.get("c") == JSONObject.NULL -> ture

以下の方法はオブジェクトがnullかどうかの判定のため、JSON値null判定はできません。

json.get("c") == null -> false

JSONObject # has()

キーが存在する場合はtrueを返却してくれます。

json.has("c") -> true
json.has("d") -> false

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>