簡體   English   中英

Java可選:如何處理long map()鏈

[英]Java Optional: how to do with long map() chain

最近,我在項目中處理json響應時開始使用Optional:

Optional.ofNullable(root.get("a"))
        .map(a -> a.get("b"))
        .map(b -> b.get("c"))
        .map(c -> c.get("d"))

對於每個get(),我必須使用map()將返回值保存在“安全框”中,這使得代碼非常詳細。 要訪問復雜的長json樹中非常深的json字段,它最終會有一個很長的map()鏈。

我夢想着這樣的事情:

Optional.ofNullable(root.get("a")).map(a.get("b").get("c").get("d"))

如果這些get()方法中的任何一個返回null值,我將得到一個空的Optional作為表達式的結果。 假設使用一個“安全框”,可以以某種方式處理所有可能的空值並將其變為空可選。 這是一個愚蠢的想法嗎?

有沒有辦法讓代碼更簡潔?

將其包裝在一個方法中:

static Optional<JsonObject> get(JsonObject root, String... paths) {
  Optional<JsonObject> opt = Optional.ofNullable(root);
  for (String p : paths) {
    if (!opt.isPresent()) break;
    opt = opt.map(a -> a.get(p));
  }
  return opt;
}

然后打電話給:

Optional<JsonObject> jsonObject = get(root, "a", "b", "c", "d");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM