java - 为什么 null 不等于 null?

标签 java json equals

<分区>

我不明白我的应用程序中发生了什么。我正在发送 PUT 请求,其中包含从 Angular 项目到 java api 的更新。我有一个方法可以验证来自放置请求的查询参数,该方法如下所示:

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 方法和 == 进行比较,但在这两种情况下,输出始终为 false。有人能解释一下为什么他们不平等吗?是因为我将它传递给 JsonObject 吗? 我附上 screenshot来自调试(我删除了不相关的部分)。

最佳答案

尝试使用isJsonNull方法:

provides check for verifying if this element represents a null value or not.

if (bodyObj.get("entityIri").isJsonNull()) {
    ...
}

当然,你需要先检查bodyObj.get("entityIri")是否不为null。我没有添加它的声明来使声明清楚。

关于java - 为什么 null 不等于 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59679613/

相关文章:

用于选择图像的 Java Swing 图像缩略图 View

java - 如何在运行时从 HTML 代码片段(由浏览器解释)生成图像

JSON 请求图像到 UIImageView

python - 发送 JSON 字符串作为 post 请求

c# - 为什么 Equals 和 ReferenceEquals 方法的结果不同,即使变量是引用类型?

c# - 合并两个自定义类返回重复项

c# - NHibernate 3.1 查询等于

java - 在 Android 中从 URI 获取文件路径时出错

python - 通过url从python访问json元素

java - 查找 Eclipse 上的所有引用资料