Jackson序列化-带有JsonRawValue的Java可选字符串
我有一个可选字符串,希望Jackson使用Jackson序列化-带有JsonRawValue的Java可选字符串,java,java-8,jackson,Java,Java 8,Jackson,我有一个可选字符串,希望Jackson使用@JsonRawValue进行序列化,但字符串值附加了可选[]。我如何避免这种情况 @JsonRawValue Optional<String> data; @JsonRawValue 可选数据; 我已经向Jdk8Module注册了ObjectMapper。根据我的评论,您可以忽略可选的字段,而是对字符串使用自定义getter值: public static class Test { @JsonIgnore Opti
@JsonRawValue
进行序列化,但字符串值附加了可选[]
。我如何避免这种情况
@JsonRawValue
Optional<String> data;
@JsonRawValue
可选数据;
我已经向Jdk8Module注册了ObjectMapper。根据我的评论,您可以忽略
可选的
字段,而是对字符串使用自定义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);
}
公共静态类测试{
@杰索尼奥雷
可选数据;
@JsonRawValue
公共字符串getDataValue(){
返回数据。orElse(空);
}
公共可选getData(){
返回数据;
}
公共无效设置数据(最终可选数据){
这个数据=数据;
}
}
公共静态void main(最终字符串[]args)引发JsonProcessingException{
最终ObjectMapper om=新ObjectMapper();
最终测试数据=新测试();
data.data=Optional.of(“Hello World”);
最终字符串值=om.writeValueAsString(数据);
系统输出打印项次(值);
}
注意:JDK8模块默认包含在此版本中。然而,使用@JsonRawValue似乎覆盖了可选的序列化,因此一个摆脱可选的自定义getter有助于实现这一点。可能
@JsonIgnore
该字段并创建一个getter,该getter将可选的
打开到字符串
,并用@JsonRawValue
注释该getter?例如,@JsonRawValue getData(){return data.orElse(null);}
有一个可选字段是非常有用的!