让我们说,我有以下包装类:
public class StringWrapper {
private final String regex;
private String value;
public StringWrapper(String regex) {
this.regex = regex;
}
public void setValue(String value) {
String validatedValue = SomeHelper.validate(regex, value);
this.value = validatedValue;
}
public String getValue() {
return value;
}
}
和以下对象:
public class SomeObject {
public StringWrapper value1 = new StringWrapper("[0-9A-Z]{3}");
public StringWrapper value2 = new StringWrapper("[A-Z]{0, 10}");
}
现在我想用jackson-json序列化它以获得以下结构:
{
"value1": "ABC",
"value2": "DEF",
}
使用自定义序列化程序很容易:
public static class StringWrapperSerializer extends JsonSerializer<StringWrapper> {
@Override
public void serialize(StringWrapper wrapper, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
gen.writeString(wrapper.getValue());
}
}
但我怎样才能反序列化呢?我不想序列化/反序列化正则表达式(以及潜在的其他属性)。我只想序列化/反序列化该值。而且我不想将其序列化/反序列化为子结构。 json格式应该隐藏包装器。
有什么想法吗?