在jhipster项目中将实体属性camel case转换为json中的snake case

Md.*_*ain 4 java json spring-boot jhipster

我正在使用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;
Run Code Online (Sandbox Code Playgroud)

Json回应

{
   "id": 0,
   "nameBangla": "string",
   "nameEnglish": "string"
}
Run Code Online (Sandbox Code Playgroud)

我想要我的实体属性将驼峰的情况,但在json响应它将蛇案.那是我不想改变我的实体类,但我想改变我的json响应,如下所述

{
   "id": 0,
   "name_bangla": "string",
   "name_english": "string"
}
Run Code Online (Sandbox Code Playgroud)

Ind*_*von 13

你有两种可能性:

明确命名您的属性:

@JsonProperty("name_bangla")
private String nameBangla;
@JsonProperty("name_english")
private String nameEnglish;
Run Code Online (Sandbox Code Playgroud)

或改变jackson(用于去/序列化)的工作原理:

杰克逊有一个设置PropertyNamingStrategy.SNAKE_CASE ,你可以设置杰克逊对象映射器.

因此,您需要为此配置Jackson,例如通过添加您自己的对象映射器:

@Configuration
public class JacksonConfiguration {

    @Bean
    public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
        return new Jackson2ObjectMapperBuilder().propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
    }
} 
Run Code Online (Sandbox Code Playgroud)

据我所知,在旧版本的JHipster中,已经有一个JacksonConfiguration配置JSR310时间模块,但后来被删除了......

将此添加到您的application.yml也应该工作:

spring.jackson.property-naming-strategy=SNAKE_CASE
Run Code Online (Sandbox Code Playgroud)


Son*_*que 6

您还可以使用注释来定义每个类的命名策略.

Kotlin的一个小例子:

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)
data class Specialization(val altUrl: String, val altId: Int, val altName: String)
Run Code Online (Sandbox Code Playgroud)