【发布时间】:2020-04-27 23:33:54
【问题描述】:
我不明白我的应用程序中发生了什么。我正在将带有更新的 PUT 请求从 Angular 项目发送到 java api。我有一个方法可以验证来自 put 请求的查询参数,该方法如下所示:
private JsonObject validateRequestBody(JsonElement requestBody) {
if (!(requestBody instanceof JsonObject)) {
throw new IllegalArgumentException("Request body cannot be case to JSON object");
}
JsonObject bodyObj = requestBody.getAsJsonObject();
System.out.println(bodyObj.get("entityIri").equals(null));
if (bodyObj.get("entityIri") == null) {
System.out.println("null");
throw new IllegalArgumentException("Request body must contain entity IRI");
}
return bodyObj;
}
如您所见,我只是想检查enityIri 参数是否等于null。为了测试它,我从 Angular 项目发送 null 作为 entityIri。我试图将它们与equal 方法和== 进行比较,但在这两种情况下,输出总是错误的。有人能解释一下为什么他们不相等吗?是因为我将它传递给JsonObject 吗?
我从调试中附上了screenshot(我删掉了不相关的部分)。
【问题讨论】:
-
bodyObj.get()将返回JsonObject的实例,它不是null,您可以调用getAsString()或其他任何方式执行此类验证 -
我尝试将
bodyObj.get("entityIri")与"null"进行比较,但这也是错误的。另外在截图中,可以看到在调试过程中bodyObj.get("entityIri")的值为null,不是字符串,因为它没有引号