为了账号安全,请及时绑定邮箱和手机立即绑定

如何在最小情况下调用 Optional 上的方法

如何在最小情况下调用 Optional 上的方法

慕虎7371278 2022-08-03 15:24:52
我有Json,看起来像这样:{    "workshop_name" : "ABC"    "user_name" : "DEF"}在我的应用程序中不是强制性的,因此它可以以最低版本提供:workshop_name{    "user_name" : "DEF"}现在我正在考虑使用Java8 Optional从JSON获取。我正在使用 org.json 库和 .我可以很容易地检查可选,如下所示:workshop_nameJSONObjectpublic static EnrichContext createEnricher(JSONObject json) {    EnrichContext enrichContext = new EnrichContext();    enrichContext.setWorkshopName(Optional.ofNullable(json.getString("workshop_name")).orElse("DEFAULT"));    enrichContext.setUserName(json.getString("user_name"));}我被迫切换到GSON,它看起来有点不同。json.get("workshop_name").getAsString();这意味着在调用JsonObject(来自GSON)后,我在中间有一个新对象。get我试图使用嵌套的可选检查,但它看起来太复杂了。我想到的是:enrichContext.setWorkshopName((Optional.ofNullable(json.get("workshop_name")).orElse(new JsonPrimitive("DEFAULT"))).getAsString());我不喜欢在每次阅读时都创造新的想法。有没有更理想的方法来解决这个问题?JsonPrimitive
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

您可以做的是使用 a 而不是 aOptional<String>Optional<JsonPrimitive>

String workshopName = Optional.ofNullable(json.get("workshop_name"))
                              .map(JsonElement::getAsString)
                              .orElse("DEFAULT");


查看完整回答
反对 回复 2022-08-03
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信