我有一个可选字符串,希望 Jackson 使用 @JsonRawValue
进行序列化,但字符串值附加了 Optional[]
。我该如何避免这种情况?
@JsonRawValue
Optional<String> data;
我已经用 Jdk8Module 注册了 ObjectMapper。
最佳答案
根据我的评论,您可以忽略 Optional
字段,而是为 String
值使用自定义 getter:
public static class Test {
@JsonIgnore
Optional<String> data;
@JsonRawValue
public String getDataValue() {
return data.orElse(null);
}
public Optional<String> getData() {
return data;
}
public void setData(final Optional<String> data) {
this.data = data;
}
}
public static void main(final String[] args) throws JsonProcessingException {
final ObjectMapper om = new ObjectMapper();
final Test data = new Test();
data.data = Optional.of("Hello World");
final String value = om.writeValueAsString(data);
System.out.println(value);
}
注意:Jdk8Module 默认包含在这个 jackson 版本中。但是,使用 @JsonRawValue 似乎会覆盖 Optional 的序列化,因此摆脱 Optional 的自定义 getter 有助于实现这一点。
关于java - Jackson 序列化 - 带有 JsonRawValue 的 Java 可选字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59030025/