У меня есть суперкласс:
@Getter
@Setter
public abstract class AbstractDto {
@NotNull
protected String num;
}
И подкласс:
@Getter
@Setter
public class SomeDto extends AbstractDto {
@NotNull
private Long id;
}
Когда я сериализую его, все в порядке:
{"num":"5600511164","id":22}
Но когда я пытаюсь для десериализации я получаю все поля как * null в SomeDto
.
Я использую эту конфигурацию
@Bean
public ObjectMapper objectMapper (Jackson2ObjectMapperBuilder builder) {
return builder.createXmlMapper(false).build();
}
Я думаю, что проблема в использовании суперкласса, но я не знаю, как исправить Это. Без суперкласса всегда нормально работает.
UPD. Сериализуйте так:
protected String marshall(Object message) throws JsonProcessingException {
return this.objectMapper.writeValueAsString(message);
}
Десериализуйте так:
protected T unmarshall(byte[] body) throws IOException {
return objectMapper.readValue(body, resolveType());
}
resolveType()
верните мне SomeDto.class
UPD. Решаемые. Проблема была в теле, это не только {"num":"5600511164","id":22}
, но и другая информация.