为什么 null 不等于 null?

McL*_*vin 2 java json equals

我不明白我的应用程序中发生了什么。我正在将带有更新的 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;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我只是想检查enityIri参数是否等于 null。为了测试它,即时通讯发送null作为entityIri从角项目。我试图将它们与equalmethod 和 with进行比较==,但在这两种情况下,输出始终为假。有人可以解释我为什么它们不相等吗?是因为我把它传给了JsonObject吗?我附上了调试的截图(我剪掉了不相关的部分)。

Mic*_*ber 6

尝试使用isJsonNull方法:

提供检查以验证此元素是否表示空值。

if (bodyObj.get("entityIri").isJsonNull()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

当然,您需要检查之前是否bodyObj.get("entityIri")不是null。我没有添加它声明来使声明清晰。