我有一个小问题。
当我使用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
?
谢谢。
答案 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();
}