将json反序列化为包装器

时间:2016-05-11 07:45:22

标签: java json jackson deserialization

让我们说,我有以下包装类:

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格式应该隐藏包装器。

有什么想法吗?

0 个答案:

没有答案