gpt4 book ai didi

java - Json 嵌套对象检查是否为 null

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:37 24 4
gpt4 key购买 nike

考虑以下 json

{  
"sub1":{
"name":"Name-sub1",
"sub11":{
"name":"Name-sub11",
"sub111":{
"name":"Name-sub111",
...
},
..
},
...
},
...
}

我现在想在java中获取内部名称Element(Name-sub111)(它是一个io.vertx.core.json.JsonObject)

object.getJsonObject("sub1").getJsonObject("sub11").getJsonObject("sub111").getString("name")

但我不确定 sub1 或 sub11 或 sub111 是否存在 - 所以我总是需要检查 null

if(object.getJsonObject("sub1") != null && object.getJsonObject("sub1").getJsonObject("sub11") != null && object.getJsonObject("sub1").getJsonObject("sub11").getJsonObject("sub111") != null) {
return object.getJsonObject("sub1").getJsonObject("sub11").getJsonObject("sub111").getString("name");
}

有人知道这种情况更好的解决方案吗?

最佳答案

您可能需要考虑创建一些返回 Optional 对象的辅助方法。

public static Optional<JsonObject> getJsonObject(JsonObject obj, String prop) {
return Optional.ofNullable(obj.getJsonObject(prop));
}

public static Optional<String> getString(JsonObject obj, String prop) {
return Optional.ofNullable(obj.getString(prop));
}

然后您可以编写方法来实现所需的结果。

try {
return getJsonObject(obj, "sub1").map((obj) -> getJsonObject(obj, "sub2")).map((obj) -> getString(obj, "sub3")).get();
} catch (NoSuchElementException e) {
return null;
}

关于java - Json 嵌套对象检查是否为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com