Если вы действительно хотите сохранить модификатор final
в поле и удалить аннотацию @JsonProperty
из конструктора, вы можете аннотировать конструктор с помощью @JsonCreator
и переименовать параметр с aid
на id
,как показано ниже:
@Data
public class Hoge {
@JsonProperty("id")
public final int cid;
@JsonCreator
public Hoge(int id){
this.cid = id;
}
}
Затем используйте один из следующих подходов:
ParanamerModule
Зарегистрируйте ParanamerModule
в своем ObjectMappper
:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new ParanamerModule());
Вам потребуется следующая зависимость от пути к классам:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-paranamer</artifactId>
<version>${jackson.version}</version>
</dependency>
Подробнее см. В документации .
ParameterNamesModule
Зарегистрируйте модуль ParameterNamesModule
и убедитесь, что код скомпилирован с использованием опции -parameters
:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES));
Требуется следующая зависимость:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>${jackson.version}</version>
</dependency>
Подробнее см. В документации .