将Jackson ObjectMapper与Java 8可选值一起使用
我正在尝试使用Jackson将具有Optional作为字段的类值写入JSON:
public class Test {
Optional field = Optional.of("hello, world!");
public Optional getField() {
return field;
}
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(new Test()));
}
}
当执行时,此类生成以下输出:
{"field":{"present":true}}
我知道现在/不存在字段被包括在内,并且在读取JSON数据时可以解决该问题,但是我无法避免这样的事实,即可选内容的实际内容从未写入输出。 :(
除了根本不使用ObjectMapper以外,这里是否有其他解决方法?
asieira asked 2020-01-29T13:58:32Z
7个解决方案
57 votes
您可以使用jackson-datatype-jdk8,其描述为:
支持新的特定于JDK8的类型,例如Optional
为此: