在下面的代码中,如果customerInfo不存在,则返回Optional[null],从而customerInfo.get(name).textValue()返回NPE。有没有办法代替map(data -> data.get("customerInfo"))return ?这里的 null是一个 NullNode 对象。Optional.empty()Optional[null]Optional[null]
Optional<JsonNode> orderData = getOrderData() // API Call
orderData.map(data -> data.get("customerInfo"))
.map(customerInfo -> customerInfo.get(name).textValue());
Run Code Online (Sandbox Code Playgroud)
您似乎误解了您遇到的问题。NullPointerException 发生的原因customerInfo.get(name)是它为 null,因此customerInfo.get(name).textValue()尝试textValue()在 null 引用上调用该方法。
要解决此问题,您可以将该调用拆分map为两个调用,如下所示:
orderData.map(data -> data.get("customerInfo"))
.map(customerInfo -> customerInfo.get(name))
.map(customer -> customer.textValue());
Run Code Online (Sandbox Code Playgroud)
这样,如果customerInfo.get(name)为 null,则生成的Optional将为空,并且最后一个 lambda 将不会被执行。