java - 在嵌套数据中查找空值和空字符串(Java)

标签 java json null

我想检查我的数据是否有空值。 JSON格式的数据如下:

"{

    "totalAmount" : 20000,
    "items" : [
    {
        "id" : "9fd91eaf-2b9a-4bae-9692-4222f85e868",
        "name" : "X hotel",
        "itemType" : 0,
        "orderCount" : 2,
        "amount" : 5000
    },
    {
        "id" : "9fd91eaf-2b9a-4bae-9692-4222f85e869",
        "name": "Special Dinner",
        "itemType" : 1,
        "orderCount" : 1,
        "amount" : 10000
    }
    ]
}"

这是我的检查器逻辑。

class NullCheck {
    public checkNull (Itinerary itinerary)
        Object nu = null;
    if (itinerary == null) {
        return true;
    } else if (itinerary.getTotalAmount() == null || itinerary.getItems() == null) {
        return true;
    } else if (itinerary.getItems().contains(null)) {
        return true;
    } else if (itinerary.getItems().stream().flatMap  // 
            (item -> Arrays.stream(item.getClass().getDeclaredFields()))
            .map(field -> { field.setAccessible(true); return field.get(nu) == null; } ) ) {
        return true;
    }
}

但是,在 field.get(nu) 处抛出 IlligalAccessException,我不明白为什么我的代码不能正常工作。 当我阅读java文档时,它的语法似乎是正确的。 请问我的代码哪部分失败了? 此外,一些json格式数据被转换为String类型的对象,所以我还需要检查string是否为空string或不是。 有简单的方法吗?

最佳答案

我认为您的代码中有两个错误。

第一个:

if (itinerary.getItems().stream().flatMap  // 
        (item -> Arrays.stream(item.getClass().getDeclaredFields()))
        .map(field -> { field.setAccessible(true); return field.get(nu) == null; } ) ) {
    return true;
}

.map的结果方法是Stream<Boolean> ,不是bool表达式,所以会出现语法错误,无法编译。

第二个:

return field.get(nu) == null;

此代码将抛出 NullPointerExceptionfiled是一个实例字段。方法getField可以扔一些Exception ,所以应该 try catch 它。

关于java - 在嵌套数据中查找空值和空字符串(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296730/

相关文章:

java - 尝试解析数组时出现空指针异常(java)

php - idiorm/paris - 将 null 写入数据库

java - 尝试添加 UP 按钮时,Android 子 Actionbar 与父 Actionbar 保持相同

java - 能否以某种方式查看 AMQ 主题的内容?

javascript - 从 child 的 child 那里获取值(value)

json - 从 Swift 发出发送 POST 请求

java - 如何在用户表和其他表之间设置HIbernate-Mapping

java - 检查 TreeSet 中的键是否以 String 开头,并获取该键

javascript - 使用 AJAX 加载 Google Maps API...但多个实例仅加载一次

java - 检查不同对象的空值