簡體   English   中英

Jackson JsonNode 和 Java Streams 返回 Optional Empty

[英]Jackson JsonNode and Java Streams to return Optional Empty

所以我有一個 json 輸入,如下所示:

{
    "a":"something",
    "b":"something2"
}

此輸入可以有兩種其他形式:

{
    "a":"something",
    "b":""
}

並且

{
    "a":"something"
}

我有一個這樣的輸入類,我將它存儲在:

public class Foo {
    private String a;
    private Optional<String> b;
}

在后兩種情況下,我想將 b 存儲為 Optional.empty()。 我已經想出了如何使用這行代碼在第 3 種情況下做到這一點:

Optional.ofNullable(inputNode.get("b")).map(node -> node.asText())

這適用於第 3 種情況。 它返回 Optional.empty。 但對於第二種情況並沒有那么多,因為b最終只是一個空字符串。 我試圖在.map之前和之后使用.reduce但由於某種原因它不會讓我在任何地方使用它。

以及如何實現我想要的想法?

您可以過濾 Optional 以檢查該值是否為空字符串:

Optional<String> b = Optional.ofNullable(inputNode.get("b"))
        .map(JsonNode::asText)
        .filter(s -> !s.isEmpty());

此代碼還有助於:

Optional.ofNullable(jsonNode.findValue("XYZ")).map(JsonNode::asText).orElse(null);

暫無
暫無

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

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