我收到的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
。
答案 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;
}
答案 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
}