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

Cla*_*ied 54 java json

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

[{"foo1":"bar1", "foo2":"bar2", "problemkey": "problemvalue"}]
Run Code Online (Sandbox Code Playgroud)

我试图测试的是存在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");
}
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*ler 132

obj.length() == 0
Run Code Online (Sandbox Code Playgroud)

是我会做的.


dje*_*lin 34

如果你对哈克没关系 -

obj.toString().equals("{}");
Run Code Online (Sandbox Code Playgroud)

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


Roh*_*dhi 8

如果是空数组:

.size() == 0
Run Code Online (Sandbox Code Playgroud)

如果是空对象:

.length() == 0
Run Code Online (Sandbox Code Playgroud)


And*_*son 6

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

isEmptyObject() 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的建议.我正在使用org.json(jar文件org.json-20120521.jar).它看起来不像是一个名为isEmptyObject的方法.=( (3认同)

Ore*_*aki 5

尝试:

if (record.has("problemkey") && !record.isNull("problemkey")) {
    // Do something with object.
}
Run Code Online (Sandbox Code Playgroud)