在下面的代码中,如果customerInfo
不存在,它将返回Optional[null],因此customerInfo.get(name).textValue()
将返回一个NPE。有没有办法让map(data -> data.get("customerInfo"))
返回Optional.empty()
而不是Optional[null]
?这里Optional[null]
中的null是一个NullNode对象。
Optional<JsonNode> orderData = getOrderData() // API Call
orderData.map(data -> data.get("customerInfo"))
.map(customerInfo -> customerInfo.get(name).textValue());
1条答案
按热度按时间mu0hgdu01#
您似乎误解了您遇到的问题。NullPointerException的发生是因为
customerInfo.get(name)
为null,因此customerInfo.get(name).textValue()
试图在null引用上调用textValue()
方法。要解决这个问题,您可以将对
map
的调用拆分为 * 两个 * 调用,如下所示:这样,如果
customerInfo.get(name)
为null,那么得到的Optional将为空,并且最后一个lambda不会被执行。