在JYSTER项目中将实体属性骆驼案例转换为json中的蛇情况
我正在使用jijster生成的项目。 这是一个微服务架构项目。
在我的实体类中,属性是用骆驼命名的。 所以当我创建一个rest服务时,它给了我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(用于de / serialization)的工作原理:
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
您也可以使用注释来定义每个类的命名策略。
Kotlin的小例子:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) data class Specialization(val altUrl: String, val altId: Int, val altName: String)
@JsonProperty
没有与jackson2.2工作。 我不得不重新命名我的getter方法,使其工作。 例如:
public String getName_english() { return nameEnglish; } public String getName_bangla() { return nameBangla; }