如何在最小场景中调用 Optional 上的方法

我有 Json,它看起来像这样:


{

    "workshop_name" : "ABC"

    "user_name" : "DEF"

}

在我的应用程序workshop_name中不是强制性的,因此它可以以最小版本出现:


{

    "user_name" : "DEF"

}

现在我正在考虑使用 Java8 Optionalworkshop_name从 JSON 中获取。我正在使用 org.json 库和JSONObject. 我可以像这样轻松检查可选:


public 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();

这意味着在调用getJsonObject(来自 GSON)之后,我在中间有一个新对象。


我尝试使用嵌套的 Optional 检查,但它看起来太复杂了。


我想出的是:


enrichContext.setWorkshopName((Optional.ofNullable(json.get("workshop_name")).orElse(new JsonPrimitive("DEFAULT"))).getAsString());

我不喜欢JsonPrimitive每次阅读都创造新的想法。有没有更优化的方法来解决这个问题?


拉风的咖菲猫
浏览 65回答 1
1回答

森栏

你可以做的是使用 aOptional<String>而不是 aOptional<JsonPrimitive>String&nbsp;workshopName&nbsp;=&nbsp;Optional.ofNullable(json.get("workshop_name")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(JsonElement::getAsString) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.orElse("DEFAULT");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java