8

JavaではJSON、例として次の文字列を使用する場合、オブジェクトが空/ヌルであるかどうかをどのように確認しますか?

{"null_object_1" : [], "null_object_2" : [null] }

私は使用してみました:

if(!jsonSource.isNull("null_object_1"))  {/*null_object_1 is not empty/null*/}
if(!jsonSource.isNull("null_object_2"))  {/*null_object_2 is not empty/null*/}

ただし、これらのIFステートメントは(空/ヌルではないかのように)trueを返します。

誰かが解決策を持っていますか?

編集: 「オブジェクト」とは、実際にはを意味しarrayます。

4

2 に答える 2

14

これら2つのことはどちらもそうではありませんnull; それらは配列です。結果はまさにあなたが期待するものです。

配列の1つは空で、もう1つには。という単一の要素が含まれていますnull

配列が空かどうかを知りたい場合は、配列を取得してから、その長さを確認する必要があります。

JSONObject myJsonObject = 
    new JSONObject("{\"null_object_1\":[],\"null_object_2\":[null]}");

if (myJsonObject.getJSONArray("null_object_1").length() == 0) {
    ... 
}

明確にするために編集:null要素を持たない(空の)配列と、まったく異なる要素を持つ配列。2番目の配列の場合、それはnull空でも空でもありません。私が言ったように、それはである単一の要素を持つ配列ですnull。それが当てはまるかどうかを判断することに関心がある場合は、配列を取得してから、各要素をテストして配列が正しいかどうかを確認し、それにnull応じて結果に基づいて動作する必要があります。

于 2012-01-21T16:53:01.940 に答える
2

このドキュメントJSONObjectAPIに従って、isNull値NULLをチェックしますが、これはあなたの場合には当てはまりません。

'null_object_1'の値がStringの場合、Stringを使用temp = getString("keyName")してチェックする必要があります

!("".equals(temp));
于 2012-01-21T16:52:23.470 に答える