201

したがって、サーバーからいくつかの JSON 値を取得しますが、特定のフィールドがあるかどうかはわかりません。

以下のようなので:

{ "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited"
}

また、次のような追加のフィールドがある場合もあります。

{ "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited",
  "club":"somevalue"
}

解析時に取得できないように、「クラブ」という名前のフィールドが存在するかどうかを確認したい

org.json.JSONException: クラブの値がありません

4

13 に答える 13

323

JSONObject クラスには「has」という名前のメソッドがあります。

http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

このオブジェクトに name のマッピングがある場合は true を返します。マッピングは NULL の場合があります。

于 2013-07-05T10:57:31.733 に答える
10

使用できますhas

public boolean has(String key)

JSONObject特定のキーが含まれているかどうかを判断します。

JSONObject JsonObj = new JSONObject(Your_API_STRING); //JSONObject is an unordered collection of name/value pairs

if (JsonObj.has("address")) { 
    //Checking address Key Present or not
    String get_address = JsonObj .getString("address"); // Present Key
}
else {
    //Do Your Staff
}
于 2016-07-23T08:41:32.513 に答える
1

これを試して

if(!jsonObj.isNull("club")){
    jsonObj.getString("club");
}
于 2013-07-05T11:10:45.430 に答える
1

これを試して、キーが存在するかどうかを確認できます。

JSONObject object = new JSONObject(jsonfile);
if (object.containskey("key")) {
  object.get("key");
  //etc. etc.
}
于 2019-08-24T21:05:08.240 に答える
1
I used hasOwnProperty('club')

var myobj = { "regatta_name":"ProbaRegatta",
    "country":"Congo",
    "status":"invited"
 };

 if ( myobj.hasOwnProperty("club"))
     // do something with club (will be false with above data)
     var data = myobj.club;
 if ( myobj.hasOwnProperty("status"))
     // do something with the status field. (will be true with above ..)
     var data = myobj.status;

現在のすべてのブラウザで動作します。

于 2018-05-19T02:59:45.273 に答える
0

JsonNode#hasNonNull(String fieldName)を使用できます。hasメソッドとnull値であるかどうかの検証を組み合わせます。

于 2020-06-08T15:29:00.420 に答える