NullPointerException-如果JSON包含null

时间:2018-09-14 13:53:19

标签: java json nullpointerexception

我有一个小问题。

当我使用JSON路径从DTO中提取值时,就像这样:

public String recipientEmail() {
    String email = validatableResponse.extract().jsonPath().get("email[0]").toString();
    return email;
}

如果该DTO包含类似以下值:

email: "test@gmail.com"

它工作正常并输出该值。但是,如果值是null,如下所示:

email: null

然后它给了我NullPointerException。如何解决此问题并能够检索null

谢谢。

3 个答案:

答案 0 :(得分:2)

如果要让email字符串包含值"null",则应使用String.valueOf()方法而不是.toString()方法。区别在于String.valueOf()将返回字符串"null",而.toString()将返回NullPointerException

所以您的行可能看起来像这样:

String email = String.valueOf(validatableResponse.extract().jsonPath().get("email[0]"));


This post解释得很好。

答案 1 :(得分:0)

如果您的值为空,应该返回什么值?

首先,我将String设置为值,如果结果为null,则应返回wich。然后,我尝试设置新值。如果失败,则该方法将返回首先设置的值。尝试捕获用于避免在抛出NullPointer时崩溃。

public String recipientEmail() {
String email="";
try{
    email = validatableResponse.extract().jsonPath().get("email[0]").toString();
}catch(NullPointerException ex){
ex.printStacktrace();
}
    return email;
}

答案 2 :(得分:0)

.toString()方法位于对象内部。如果您的对象是null,则jvm无法找到toString()方法。 NullPointerException

尝试

String email = validatableResponse.extract().jsonPath().get("email[0]");

if(email == null){
   email = "null";
}else{
   email = email.toString();
}