74

我收到的 JSON Collection 对象如下所示:

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

我要测试的是problemvalue. 如果problemvalue返回 JSON 对象,我很高兴。如果没有,它将返回为{}. 我如何测试这种情况?我尝试了几件事无济于事。

这是我迄今为止尝试过的:

//      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");
}

我希望其中一行打印“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 回答
13

如果为空数组:

.size() == 0

如果为空对象:

.length() == 0
于 2018-04-27T10:00:43.117 回答
6

JSON 符号 {} 表示一个空对象,表示没有成员的对象。这与 null 不同。它也不是字符串,因为您试图将其与字符串“{}”进行比较。我不知道您使用的是哪个 json 库,但请尝试寻找类似以下的方法:

isEmptyObject() 
于 2013-10-03T22:51:46.913 回答
4

尝试:

if (record.has("problemkey") && !record.isNull("problemkey")) {
    // Do something with object.
}
于 2013-10-03T22:40:09.247 回答
2

我在 JSONObject 和 JSONArray() 上添加了 isEmpty() 方法

 //on JSONObject 
 public Boolean isEmpty(){         
     return !this.keys().hasNext();
 }

...

//on JSONArray
public Boolean isEmpty(){
    return this.length()==0;        
}

你可以在这里得到它https://github.com/kommradHomer/JSON-java

于 2014-09-03T13:17:03.533 回答
2

我会执行以下操作来检查空对象

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

对于这种情况,我会这样做:

var obj = {};

if(Object.keys(obj).length == 0){
        console.log("The obj is null")
}

于 2019-05-16T15:52:29.007 回答
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
@Test
public void emptyJsonParseTest() {
    JsonNode emptyJsonNode = new ObjectMapper().createObjectNode();
    Assert.assertTrue(emptyJsonNode.asText().isEmpty());
}
于 2018-01-02T19:57:53.313 回答
0

如果 Records 是 ArrayNode 时返回的 JSON 具有以下结构:

{}client 
  records[]

并且您想检查记录节点中是否包含某些内容,那么您可以使用方法 size();

if (recordNodes.get(i).size() != 0) {}
于 2017-03-17T18:58:00.260 回答
0
if (jsonObj != null && jsonObj.length > 0)

要检查 JSONObject 中的嵌套 JSON 对象是否为空:

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 回答