我试图用杰克逊写一个类值JSON具有可选的字段:使用杰克逊ObjectMapper与Java 8可选值
public class Test {
Optional<String> field = Optional.of("hello, world!");
public Optional<String> 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呢?
选配并不意味着用作域(或与此有关的属性)。它们只能用作返回值。 – zeroflagL 2014-09-06 09:28:31
@zeroflagL您能否提供任何可信来源来描述可选的含义? – Jonas 2014-12-03 12:54:57
@Jonas [这个答案](http://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555)例如:_我们的目的是为图书馆提供一个有限的机制方法返回类型,其中需要有一种清晰的方式来表示“无结果”_。还没有实现'Serializable'是非常不言而喻的。 – zeroflagL 2014-12-04 07:03:41