我正在使用jhipster生成的项目。这是一个微服务架构项目。
在我的实体类中,属性以camel case命名。因此,当我创建一个休息服务时,它给了我json,其中json属性名称与实体属性相同。
实体类
@Entity
@Table(name = "ebook")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "ebook")
public class Ebook implements Serializable {
private Long id;
private String nameBangla;
private String nameEnglish;
Json回应
{
"id": 0,
"nameBangla": "string",
"nameEnglish": "string"
}
我想要我的实体属性将是camel case,但在json响应中它将是蛇案。那是我不想改变我的实体类,但我想改变我的json响应,如bellow
{
"id": 0,
"name_bangla": "string",
"name_english": "string"
}
答案 0 :(得分:10)
您有两种可能性:
明确命名您的属性:
@JsonProperty("name_bangla")
private String nameBangla;
@JsonProperty("name_english")
private String nameEnglish;
或改变jackson(用于去/序列化)的工作原理:
杰克逊有一个名为PropertyNamingStrategy.SNAKE_CASE
的环境
您可以为jackson objectmapper设置。
所以,你需要为此配置Jackson,例如通过添加自己的对象映射器:
@Configuration
public class JacksonConfiguration {
@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
return new Jackson2ObjectMapperBuilder().propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
}
}
据我所知,在旧版本的JHipster中,已经有JacksonConfiguration
来配置JSR310时间模块,但后来被删除了......
将此添加到您的application.yml也应该有效:
spring.jackson.property-naming-strategy=SNAKE_CASE
答案 1 :(得分:6)
您还可以使用注释来定义每个类的命名策略。
Kotlin的小例子:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)
data class Specialization(val altUrl: String, val altId: Int, val altName: String)