2016-11-24 31 views
0

我正在使用jhipster生成的项目。这是一个微服务架构项目。转换实体属性骆驼案件json项目中的json中的蛇案例

在我的实体类中,属性用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" 
} 

我想,我的实体属性将大小写混合,但在JSON响应它将蛇情况。这是我不想改变我的实体类,但我想改变像波纹管

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

回答

6

我JSON响应你有两种可能性:

明确的命名你的属性:

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

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

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 
+0

谢谢你的帮助。我只在'spring:jackson:'部分的'application.yml'文件中添加了'property-naming-strategy:CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES'。现在输出很好。但是在运行开始时我在日志中发现了一些错误。这些错误看起来像'java.lang.NoSuchMethodException:com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder。 (com.fasterxml.jackson.databind.PropertyName,com.fasterxml.jackson.databind.AnnotationIntrospector,boolean)'你能帮我克服这个错误吗? @Indivon –

+1

请注意,CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES已弃用,以支持SNAKE_CASE。 没有这样的方法例外可能发生,如果你有一个错误的版本,或者你使用例如“JsonProperty”或其他Jackson错误包装的注释。在jhipster应用程序中有com.fasterxml。*和org.springframework.cloud。*。可能是,这可能是问题... – Indivon

1

你也可以使用注释来定义每个类的命名策略。在科特林

小例子:

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) 
data class Specialization(val altUrl: String, val altId: Int, val altName: String) 
0

@JsonProperty没有为杰克逊工作2.2。我必须重新命名我的getter方法才能使其工作。例如:

public String getName_english() { 
    return nameEnglish; 
} 

public String getName_bangla() { 
    return nameBangla; 
} 
相关问题