java - 在 jhipster 项目中将实体属性 Camel 大小写转换为 json 中的蛇大小写

标签 java json spring-boot jhipster

我正在处理一个由 jhipster 生成的项目。它是一个微服务架构项目。

在我的实体类中,属性是用驼峰命名的。因此,当我创建休息服务时,它会给我 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"
}

我希望我的实体属性是驼峰式,但在 json 响应中它是蛇形。那就是我不想更改我的实体类,但我想更改我的 json 响应,如下所示

{
   "id": 0,
   "name_bangla": "string",
   "name_english": "string"
}

最佳答案

你有两种可能:

明确命名您的属性:

@JsonProperty("name_bangla")
private String nameBangla;
@JsonProperty("name_english")
private String nameEnglish;

或更改 jackson(用于反序列化)的工作方式:

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

关于java - 在 jhipster 项目中将实体属性 Camel 大小写转换为 json 中的蛇大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782685/

相关文章:

ios - 尝试将 JSON 项目附加到数组但不起作用

Spring Security 5 OAuth2 客户端与 Gitlab 失败

java - 如何修改 org.springframework.data.jpa.domain.Specification 对象?

java - 应用服务器会影响Java内存使用吗?

java - Android PhoneGap 插件,UI 标签栏,调整 WebView 大小

java - 确定谁调用stateChanged

spring-boot - Spring Boot 版本控制 - 版本控制是否应该应用于所有端点,即使只有一个端点发生了变化

java - 在 Eclipse 中导出多个 jar

angularjs - 使用来自node.js的angularjs中的json数据作为后端和sql数据库

javascript - 在 json_decode 中获取 null