我正在研究使用SpringBoot应用程序开发的REST API。在这里,我想使有效负载(JSON)中的字段在映射到Java对象时不区分大小写。下面是我的代码。
有效载荷
{"limit":1,"name":"MATTHEW PHILLIPS"}
请求对象
private String limit;
private String name;
public String getLimit() {
return limit;
}
public void setLimit(String limit) {
this.limit = limit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
我使用 Spring 注释直接将 JSON 有效负载映射到 java 对象@RequestBody
。我在这里的问题是,如何使 java 对象映射到忽略大小写的字段。
问候拉克什
好吧,如果它的 Spring 启动应用程序,您可以在application.properties
文件中拥有它: spring.jackson.mapper.accept_case_insensitive_properties=true
或者,如果您使用 YAML:
spring:
jackson:
mapper:
accept_case_insensitive_properties: true
我最近通过注释配置找到了一个解决方案:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@Configuration
public class Config {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
return mapper;
}
}
我正在使用这些依赖项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.6.5</version>
</dependency>
祝你好运。
,最简单的解决方案是在我的requestBody的类定义中使用com.fasterxml.jackson.annotation.JsonFormat注释(我使用的是2.5.0 spring-boot,但它是一个更快的xml注释,所以它可能不相关):
@JsonFormat(with = {JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES})