如何在Java中测试JSON对象是否为空

时间:2013-10-03 22:36:02

标签: java json

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

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

我期望其中一行打印“无dps键”因为{"dps":{}},但无论出于何种原因,它都不是。我正在使用org.json。 jar文件是org.json-20120521.jar

15 个答案:

答案 0 :(得分:119)

obj.length() == 0

就是我要做的。

答案 1 :(得分:32)

如果你对黑客没问题 -

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

序列化对象既昂贵又对大型对象而言,但是理解JSON作为字符串透明是很好的,因此查看字符串表示是您可以随时解决问题的方法。

答案 2 :(得分:6)

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

isEmptyObject() 

答案 3 :(得分:5)

如果是空数组:

.size() == 0

如果是空对象:

.length() == 0

答案 4 :(得分:2)

尝试:

if (record.has("problemkey") && !record.isNull("problemkey")) {
    // Do something with object.
}

答案 5 :(得分:2)

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

obj.similar(new JSONObject())

答案 6 :(得分:0)

Object getResult = obj.get("dps"); 
if (getResult != null && getResult instanceof java.util.Map && (java.util.Map)getResult.isEmpty()) {
    handleEmptyDps(); 
} 
else {
    handleResult(getResult); 
}

答案 7 :(得分:0)

我在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

答案 8 :(得分:0)

如果记录是ArrayNode,则JSON返回以下结构:

{}client 
  records[]

并且您想要检查记录节点是否包含某些内容 然后你可以使用方法size();

if (recordNodes.get(i).size() != 0) {}

答案 9 :(得分:0)

if (jsonObj != null && jsonObj.length > 0)

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

if (!jsonObject.isNull("key") && jsonObject.getJsonObject("key").length > 0)

答案 10 :(得分:0)

@Test
public void emptyJsonParseTest() {
    JsonNode emptyJsonNode = new ObjectMapper().createObjectNode();
    Assert.assertTrue(emptyJsonNode.asText().isEmpty());
}

答案 11 :(得分:0)

如果您要检查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");
}

这可能会对您有所帮助。

答案 12 :(得分:-1)

在这种情况下,我会执行以下操作:

var obj = {};

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

答案 13 :(得分:-2)

尝试/*string with {}*/ string.trim().equalsIgnoreCase("{}")),也许有一些额外的空格或其他东西

答案 14 :(得分:-2)

使用以下代码:

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

}
相关问题