Java Optional ofNullable 处理空指针异常
Java About 1,161 words示例
JSON字符串
{
"age": null,
"address": null
}
Java代码构造JsonNode
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode objectNode = objectMapper.createObjectNode();
Integer age = null;
objectNode.put("age", age);
String address = null;
objectNode.put("address", address);
使用get(String propertyName)获取字段值
int age1 = objectNode.get("age").asInt();
System.out.println(age1);
String address1 = objectNode.get("address").asText();
System.out.println(address1);
输出
0
null
此时想获取name,一个不存在的属性时
String name1 = objectNode.get("name").asText("空name000");
System.out.println(name1);
会得到空指针异常,因为get()方法得到的是空对象,链式调用asText()方法会抛出空指针异常。
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asText()" because the return value of "com.fasterxml.jackson.databind.node.ObjectNode.get(String)" is null
at xxx.MyApp.main(MyApp.java:38)
Optional.ofNullable
使用Optional的ofNullable来防止链式调用过程中可能出现的空指针异常,如果有多个链条,则添加多个map()方法,最后使用Optional的orElse()来处理出现空对象后返回的值。
String name = Optional.ofNullable(objectNode.get("name")).map(jsonNode -> jsonNode.asText("空name000")).orElse("空name111");
System.out.println(name);
Views: 28 · Posted: 2026-01-08
———         Thanks for Reading         ———
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...