在 jhipster 项目中将实体属性骆驼案例转换为 json 中的蛇案例
Posted
技术标签:
【中文标题】在 jhipster 项目中将实体属性骆驼案例转换为 json 中的蛇案例【英文标题】:Convert entity property camel case to snake case in json in jhipster project 【发布时间】:2017-04-08 12:55:01 【问题描述】:我正在处理一个使用 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"
【问题讨论】:
【参考方案1】:你有两种可能:
明确命名您的属性:
@JsonProperty("name_bangla")
private String nameBangla;
@JsonProperty("name_english")
private String nameEnglish;
或更改 jackson(用于反序列化)的工作方式:
Jackson 有一个名为 PropertyNamingStrategy.SNAKE_CASE
的设置
您可以为杰克逊对象映射器设置。
因此,您需要为此配置 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
【讨论】:
感谢您的帮助。我只是将property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
添加到我的application.yml
文件的spring:jackson:
部分。现在输出很好。但是我在运行开始时的日志中发现了一些错误。错误看起来像java.lang.NoSuchMethodException: com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.<init>(com.fasterxml.jackson.databind.PropertyName, com.fasterxml.jackson.databind.AnnotationIntrospector, boolean)
你能帮我克服这个错误吗? @Indivon
请注意,CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES 已弃用,取而代之的是 SNAKE_CASE。如果您的版本错误,或者您使用例如来自错误包的“JsonProperty”或其他 Jackson-Annotations。 jhipster 应用中有 com.fasterxml.* 和 org.springframework.cloud.* 。可能,这可能是问题所在......【参考方案2】:
您也可以使用注解来定义每个类的命名策略。
Kotlin 中的小例子:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)
data class Specialization(val altUrl: String, val altId: Int, val altName: String)
【讨论】:
以上是关于在 jhipster 项目中将实体属性骆驼案例转换为 json 中的蛇案例的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 3.0 System.Text.Json骆驼案例序列化
在 CoreData 实体中将属性从 NSNumber 转换为 NSString - LightWeightMigration