74

受け取った JSON Collection オブジェクトは次のようになります。

[{"foo1":"bar1", "foo2":"bar2", "problemkey": "problemvalue"}]

私がテストしようとしているのは、の存在ですproblemvalue。JSON オブジェクトが返された場合problemvalue、私は満足しています。そうでない場合は、 として返され{}ます。この状態をテストするにはどうすればよいですか? 私は無駄にいくつかのことを試しました。

これは私がこれまでに試したことです:

//      if (obj.get("dps") == null) {  //didn't work
//      if (obj.get("dps").equals("{}")) {  //didn't work
if (obj.isNull("dps")) {  //didn't work
    System.out.println("No dps key");
}

これらの行の 1 つに「No dps key」と表示されると予想して{"dps":{}}いましたが、何らかの理由でそうではありません。を使用してorg.jsonいます。jarファイルはorg.json-20120521.jar.

4

15 に答える 15

169
obj.length() == 0

私がすることです。

于 2014-06-09T21:18:09.040 に答える
43

ハックしても大丈夫なら -

obj.toString().equals("{}");

オブジェクトのシリアル化は高価であり、大きなオブジェクトの場合はなおさらですが、JSON は文字列として透過的であることを理解しておくとよいでしょう。したがって、文字列表現を調べることは、問題を解決するためにいつでも実行できることです。

于 2013-10-04T00:04:27.417 に答える
6

JSON 表記 {} は空のオブジェクトを表し、メンバーのないオブジェクトを意味します。これはヌルと同じではありません。文字列「{}」と比較しようとしているので、どちらも文字列ではありません。どのjsonライブラリを使用しているかわかりませんが、次のようなメソッドを探してみてください:

isEmptyObject() 
于 2013-10-03T22:51:46.913 に答える
2

空のオブジェクトを確認するには、次のようにします

obj.similar(new JSONObject())
于 2015-10-26T17:38:09.023 に答える
1

json の空のケースを確認したい場合は、以下のコードを直接使用できます

String jsonString = {};
JSONObject jsonObject = new JSONObject(jsonString);
if(jsonObject.isEmpty()){
 System.out.println("json is empty");
} else{
 System.out.println("json is not empty");
}

これはあなたを助けるかもしれません。

于 2018-10-30T15:34:31.563 に答える
0
Object getResult = obj.get("dps"); 
if (getResult != null && getResult instanceof java.util.Map && (java.util.Map)getResult.isEmpty()) {
    handleEmptyDps(); 
} 
else {
    handleResult(getResult); 
}
于 2013-10-03T23:53:17.623 に答える
0
if (jsonObj != null && jsonObj.length > 0)

ネストされた JSON オブジェクトが JSONObject 内で空かどうかを確認するには、次のようにします。

if (!jsonObject.isNull("key") && jsonObject.getJSONObject("key").length() > 0)
于 2017-04-03T14:00:50.240 に答える
-2

次のコードを使用します。

if(json.isNull()!= null){  //returns true only if json is not null

}
于 2014-07-15T23:21:16.507 に答える
-3

試してみてください/*string with {}*/ string.trim().equalsIgnoreCase("{}"))。おそらく余分なスペースか何かがあるかもしれません

于 2013-10-03T22:42:17.007 に答える